是否可以通过DB类加载?

时间:2014-09-05 15:42:11

标签: php laravel laravel-4 eloquent

我有一个传递表名的脚本。我希望能够为返回的记录加载关系关系。例如,我可以直接使用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()

执行此操作

1 个答案:

答案 0 :(得分:0)

使用DB::table()您正在使用query builder。急切加载是eloquent orm的一项功能。 Afiak无法通过查询生成器执行此操作。

但是你的笨重的解决方案绝对可以,我以同样的方式解决了类似的问题。如果你只是担心代码风格,你可以实现一个简单的ModelFactory来执行这个“丑陋”的工作,如下所示:

ModelFactory::create($table)->find($id)->...