我的系統有用戶,職位和類別。是檢索許多通過多種口才
我的口才關係(省略倒數)如下:
用戶hasMany
職位。 郵政belongsTo
用戶。 發佈hasOne
類別。
我想取回已使用由特定用戶即沿東西線的所有類別:
$categories = Category->with('posts')
->has('post')
->where('user_id' => $user->id)
->get();
顯然,上述不工作,我只是把它放在那裏呈現理念。
謝謝你的幫助!
我的系統有用戶,職位和類別。是檢索許多通過多種口才
我的口才關係(省略倒數)如下:
用戶hasMany
職位。 郵政belongsTo
用戶。 發佈hasOne
類別。
我想取回已使用由特定用戶即沿東西線的所有類別:
$categories = Category->with('posts')
->has('post')
->where('user_id' => $user->id)
->get();
顯然,上述不工作,我只是把它放在那裏呈現理念。
謝謝你的幫助!
假設你後belongsTo
與關係類被命名爲類別你可以這樣做:
$user->load('posts.category');
$user->posts->each(function ($post) {
$post->category->id;
});
編輯
您可以將hasManyTrough
關係添加到用戶模型,並且您將能夠訪問用戶的所有類別粗略的職位。加入用戶類:
public function categories()
{
return $this->hasManyThrough('App\Category', 'App\Posts');
}
然後你就可以使用它像這樣:
$user->load('categories');
$categories = $user->categories;
這將讓屬於該用戶的所有帖子的所有類別。 請注意,您的模型名稱空間可能不同。
使用嵌套whereHas()
並約束來過濾特定用戶。
$categories=Category::whereHas('post.user', function($q) use($id)
{
$q->where('id',$id); //constrain on user
})->get();
有可能有許多不同的方式來實現你所追求的。
https://laravel.com/docs/5.4/eloquent-relationships#has-many-through
我試圖避免環路瞭解口才更好,因爲我有一個mysql的原料解決方案,我相信,一定有說服力的一個班輪,讓期望的結果 – jacobdo
@jacobdo,請檢查我的編輯上面。 – TheFallen