我有一个传递表名的脚本。我希望能够为返回的记录加载关系关系。例如,我可以直接使用classname来获取它:
Item::find($id)->schedules->load('template')->toArray();
这给了我想要的东西,但是,传递的表名是变量,复数和小写。为了解决这个问题,我可以做类似的事情:
$table_class = studly_case(str_singular($table));
$table_class::find($id)->schedules->load('template')->toArray();
然而,这有点笨重。我想这样做:
DB::table($table)->find($id)->schedules->load('template')->toArray();
但是上面的方法不起作用,我无法弄清楚它的正确语法。我如何使用DB::table()
?
答案 0 :(得分:0)
使用DB::table()
您正在使用query builder。急切加载是eloquent orm的一项功能。 Afiak无法通过查询生成器执行此操作。
但是你的笨重的解决方案绝对可以,我以同样的方式解决了类似的问题。如果你只是担心代码风格,你可以实现一个简单的ModelFactory来执行这个“丑陋”的工作,如下所示:
ModelFactory::create($table)->find($id)->...