Laravel 5.2,如何查询所有具有belongs_to Bar的Foo,其中bar_id位于bar_ids_array中

时间:2016-04-25 18:37:53

标签: laravel laravel-5.2

我有通过belongs_to连接表属于Bars的som Foos。 foo_bar这样的名称。

我有一个bar_ids数组,我想找到所有在bar_id数组中都有bar_id的Foos。

$ Foos = \ App \ Foo :: with(' bar') - > where(' bar_id',$ barIDs) - > get();

这就是我现在正在尝试的。我尝试了几个连接但是还没有能够解决这个简单的问题。

相关的架构:

foo_bar:foo_id,bar_id

这基于:BelongsTo

基本上我的Foo属于酒吧,我的酒吧属于许多Foo

1 个答案:

答案 0 :(得分:0)

只需为急切加载查询添加查询约束:

$Foos = \App\Foo::with(['bar' => function ($query) use ($barIDs) { $query->whereIn('bar_id', $barIDs) }]) ->get();

第二种方法是使用数据透视表foo_bar加入您的查询:

$Foos = \App\Foo::with('bar') ->select('foo.*') ->join('foo_bar', 'foo_bar.foo_id', '=', 'foo.id') ->whereIn('foo_bar.bar_id', $barIDs)->get();