ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-13 19:19:02  阅读:186  来源: 互联网

标签:php orm redbean


我得到以下内容:

$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:\Documenten\Dropbox\Dropbox\dummy-htdocs\VID_service\vid_push\libs\rb.php:3465
Stack trace:
#0 E:\Documenten\Dropbox\Dropbox\dummy-htdocs\VID_service\vid_push\libs\rb.php(3496): RedBean_OODB->check(Object(RedBean_OODBBean))
#1 E:\Documenten\Dropbox\Dropbox\dummy-htdocs\VID_service\vid_push\libs\rb.php(7376): RedBean_OODB->store(Object(RedBean_OODBBean))
#2 E:\Documenten\Dropbox\Dropbox\dummy-htdocs\VID_service\vid_push\api\registerpush.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);

标签:php,orm,redbean
来源: https://codeday.me/bug/20190613/1234816.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有