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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在RedBean属性中存储array()?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到以下内容

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

帖子的“天”部分是:

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

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

但后来我得到了这些错误

是否无法将数组存储在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);

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在RedBean属性中存储array()?全部内容,希望文章能够帮你解决php – 如何在RedBean属性中存储array()?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。