为了账号安全,请及时绑定邮箱和手机立即绑定

通过字符串加载 Laravel eloquent 属性

通过字符串加载 Laravel eloquent 属性

PHP
慕村9548890 2021-08-28 10:07:13
我在我的数据库中存储了一些字符串,我希望能够使用它们获取模型属性。基本上,我可以打电话给这样的用户预订$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"

因此,虽然它需要一些额外的逻辑,但可以从数据库字符串设置对象访问。


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号