加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在RedBean属性中存储array()?

发布时间:2020-12-13 17:40:10 所属栏目:PHP教程 来源:网络整理
导读:我得到以下内容: $post = (array) json_decode($post);$pushUser-dagen = (array) $post['days']; 帖子的“天”部分是: [dagen] = Array ( [0] = Monday [1] = Wednesday ) 我想做的就是将$pushUser-dagen存储在数组中,天数为:)…非常简单吧? 但后来我得
我得到以下内容:

$post = (array) json_decode($post);
$pushUser->dagen = (array) $post['days'];

帖子的“天”部分是:

[dagen] => Array
    (
        [0] => Monday
        [1] => Wednesday 
    )

我想做的就是将$pushUser-dagen存储在数组中,天数为:)…非常简单吧?

但后来我得到了这些错误:

exception ‘RedBean_Exception_Security’ with message ‘Invalid Bean: property dagen ‘ in E:DocumentenDropboxDropboxdummy-htdocsVID_servicevid_pushlibsrb.php:3465
Stack trace:
#0 E:DocumentenDropboxDropboxdummy-htdocsVID_servicevid_pushlibsrb.php(3496): RedBean_OODB->check(Object(RedBean_OODBBean))
#1 E:DocumentenDropboxDropboxdummy-htdocsVID_servicevid_pushlibsrb.php(7376): RedBean_OODB->store(Object(RedBean_OODBBean))
#2 E:DocumentenDropboxDropboxdummy-htdocsVID_servicevid_pushapiregisterpush.php(32): R::store(Object(RedBean_OODBBean))
#3 {main}

是否无法将数组存储在RedBean对象中?

解决方法

无法在Bean中存储数组,因为RedBeanPHP无法预测数组在数据库中的表示方式.

解决方案取决于您稍后要对此信息执行的操作.你想添加其他东西,而不仅仅是工作日,比如晚上或加班(如果安排?),在这种情况下,我会选择最灵活,最简单的解决方案:

//Flexible solution
foreach($days as $day) 
$user->sharedDay[] = R::findOne('day',' name = ? ',array($day));

因为我们使用sharedDay而不是ownDay,所以记录不会重复.此解决方案创建了一个整洁的链接表day_user.

当然,您需要在数据库中存储一周的工作日:

$days = array('monday',...);
 foreach($days as $dayname) {
    $d = R::dispense('day');
    $d->name = $dayname;
    R::store($d);
 }

如果您希望能够快速跟踪具有特定工作日配置文件的用户,则可能需要对日期进行编码:

//Performance solution
function days($days) {
    $weekdays = array('sunday','monday','tuesday',...);
    $field = '';
    foreach($weekdays as $day) {
            $field .= (in_array($day,$days)) ? '1' : '0';
    }
    return $field;
}


$user->days = bindec(days($days));

在这种情况下,您可以通过查询找到每个具有“星期一”和“星期六”的用户:天= 33.这真的很快.

如果您根本不关心数据,可以选择:

//Quick and dirty solution
$user->days = implode(',',$days);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读