Laravel Multiple Modles查询

时间:2019-04-25 19:01:17

标签: mysql laravel eloquent

嘿,我现在看了很多文章,但是我认为我的知识妨碍我改编任何示例,所以我在这里,希望您能提供帮助:

我想要的是:有一个雄辩的查询,它看起来在2个表中

我所拥有的:

$myProfile = \App\User::with('friends')->where('friend_type','2')->get();
我希望获得

结果。 在我的用户模型中,我具有以下内容:

    public function friends()
{
    return $this->hasMany(Friend::class);
}

在我的朋友模型中:

    public function user()
{
    return $this->belongsTo(User::class);
}

我也尝试过:

$myProfile = \App\User::with(['friends'])->where('friend_type','2')->get();

$myProfile = \App\User::with('friends')->where('friends.friend_type',2)->get();

但我收到的错误仍然相同:

Column not found: 1054 Unknown column 'friends.friend_type' in 'where clause' (SQL: select * from `users` where `friends`.`friend_type` = 2 and `users`.`deleted_at` is null)

非常感谢

2 个答案:

答案 0 :(得分:1)

我认为以下将达到目的:

User::with(['friends' => function ($query) {
    $query->where('friend_type', 2);
}])->get();

答案 1 :(得分:1)

如果要选择friend_type2的所有用户,则应使用whereHas。就像

\App\User::whereHas('friends', function($q){
  $q->where('friends.friend_type',2)
})->get();