通过字符串加载 Laravel eloquent 属性

我在我的数据库中存储了一些字符串,我希望能够使用它们获取模型属性。


基本上,我可以打电话给这样的用户预订


$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

这可能吗?


慕村9548890
浏览 123回答 1
1回答

慕码人2483693

我找到了一个涉及从静态字符串链接对象访问的解决方案:$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"因此,虽然它需要一些额外的逻辑,但可以从数据库字符串设置对象访问。
打开App,查看更多内容
随时随地看视频慕课网APP