首页 > 解决方案 > Laravel 多模型查询

问题描述

嘿,我现在已经看了很多文章,但我认为我的知识阻碍了我调整任何示例,所以我在这里,希望你能提供帮助:

我想要什么:有一个雄辩的查询,在 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)

首先十分感谢

标签: mysqllaraveleloquent

解决方案


我认为以下方法可以解决问题:

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

推荐阅读