0

我有 3 个模型

Language: id,name.                Table: languages.|
Variant:id,name, language_id.    Table:variants.|
Symbol: id, name, variant_id.     Table :symbols.

Relations:
Language->hasMany->Variant.|
Variant->hasMany->Symbol.|
Language->hasManyThrough->(Symbol,Variant)

我想通过 language_id 找到属于一种语言的所有符号,并将 $symbols Query Builder 对象从控制器分页到我的视图

我尝试了类似的东西

$variants=Variant::with('symbol')->where('language_id',"=",$language_id)->get();
$symbols= collect(new Symbol);
foreach($variants as $variant){
$symbols->push($variant->symbol()->paginate(10));
}

return view(symbols.index,compact($symbols))

在视图中,我只是在 foreach @foreach($symbols as $item) {{ $item->name; }}

这会在视图中引发错误,因为传递的对象是集合而不是 Query 返回的结果。

如何将此集合转换为查询生成器结果?

4

1 回答 1

1

尝试这样的事情

$symbols = Symbol::whereHas('variant', function ($query) use ($language_id) {
    $query->where('language_id', $language_id);
})->paginate(10);

return view('index', ['symbols' => $symbols]);
于 2018-02-08T18:19:17.427 回答