我在我的数据库中存储了一些字符串,我希望能够使用它们获取模型属性。基本上,我可以打电话给这样的用户预订$user->bookings->date在我的控制器中,它可以工作,我正在像这样在我的数据库中存储一个字符串'user->bookings->date'如何使用数据库中的这个字符串来获取属性?我希望能够做类似的事情$user = User::findOrFail(1);$string = 'user->bookings->date'; //This is fetched from the db normally$booking_date = ${$string}; //Instead of writing $user->bookings->date这可能吗?
1 回答

慕码人2483693
TA贡献1860条经验 获得超9个赞
我找到了一个涉及从静态字符串链接对象访问的解决方案:
$user = User::findOrFail(1);
$string = "user->bookings->date";
$params = explode("->", $string);
$var = null;
foreach($params AS $param){
if($var){
$var = $var->{$param};
} else {
$var = ${$param};
}
}
dd($var);
在 的第一次迭代中$params,设置$var为${$param}( $user)的值。然后,在下一次迭代中,设置$var为$var->{$param}( $user->bookings, $user->bookings->date)的值。然后,最后,回显(或dd()) 的值$var。在我的测试中,这导致
"2019-06-18 12:06:00"
因此,虽然它需要一些额外的逻辑,但可以从数据库字符串设置对象访问。
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消