3

使用 Laravel 4 我有以下模型和关系:有很多记录的事件有很多项目。我想做的是这样的

Item::where('events.event_type_id', 2)->paginate(50);

这个原因不起作用,因为 Eloquent 在检索记录时不会将模型连接在一起。那么我如何在不自己编写 SQL 的情况下解决这个问题(我想避免这种情况,因为我想使用分页)。

4

2 回答 2

6

你想要的是急切的加载

如果要指定其他约束,它的工作原理如下:

Item::with(array('events' => function($query) {
    return $query->where('event_type_id', 2);
}))->paginate(50);
于 2013-05-30T08:57:22.830 回答
0

这里有一个拉取请求待处理https://github.com/laravel/framework/pull/1951

这将允许您对 has() 方法使用约束,如下所示:

$results = Foo::has(array('bars' => function($query)
{
    $query->where('title', 'LIKE', '%baz%');
}))
->with('bars')
->get();

这个想法是您只返回具有相关 Bars 的 Foos,这些 Bars 在其标题列中包含字符串 'baz'。

它也在这里讨论:https ://github.com/laravel/framework/issues/1166 。希望它会尽快合并。当我使用拉取请求中的更新代码更新 Builder 类的本地副本时,对我来说效果很好。

于 2013-08-01T22:13:11.760 回答