0
User::with(array('post'=>function($query){
$query->select('id','user_id');
}))->get();
它將如何成爲多個連接的語法?我需要用3個連接和1個條件來做到這一點。如何使用雄辯進行多個連接?
User::with(array('post'=>function($query){
$query->select('id','user_id');
}))->get();
它將如何成爲多個連接的語法?我需要用3個連接和1個條件來做到這一點。如何使用雄辯進行多個連接?
嘗試類似的東西在你的用戶模型:
public static function wherePost(\App\Post $post) {
return static::leftJoin(
'posts',
'user.id', '=', 'posts.user_id'
)
// ... more joins
->where('posts.id', $post->id)
->select(with(new static)->getTable().'.*');
}
比你可以從一個特定的帖子一樣,獲得用戶: $user = User::wherePost($post);
護理來發表您的模型?你檢索單個* join *的方式很好 - 你應該從它開始。 ':: with($ parameter)'方法接受數組(和字符串)參數,所以你可以做'User :: with(array('post'=> ...,'rel2'=> ...., ''rel3'=> .....,.....) - > where('someField','someValue') - > get()'should work。[api](http:// laravel .com/api/5.1/Illuminate/Database/Eloquent/Model.html#method_with)和[source](https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model。 php#L731),並且不要忘記* dot *用於嵌套關係的魔力 –
你這樣做的方式 - 在SQL級別上不會有任何連接,將會有2個SQL查詢運行 - 一個可以獲取用戶和用戶加載他們的帖子 –
你應該使用'whereHas()',或者只是'has()'more info [here。](http://laravel.com/docs/5.1/eloquent-relationships#查詢關係)但是,你也可以保持基礎,並使用簡單的'join()'[here。](http://laravel.com/docs/5.1/queries#joins)它實際上取決於你的偏好至 使用。 – Joost