📜  whereHas 站点:https:laravel.com docs - PHP (1)

📅  最后修改于: 2023-12-03 15:35:41.244000             🧑  作者: Mango

Laravel whereHas 方法介绍

在 Laravel 中,whereHas 是一个非常有用的 Eloquent 查询方法。它允许我们查询与相关模型相关联的模型,并根据这些关联进行过滤。

如何使用

whereHas 方法可以在 Eloquent 模型的查询语句中使用。让我们看一个例子,假设我们有一个 User 模型,它关联了一个 Post 模型,我们想要查询发布了至少一篇文章的所有用户,我们可以这样做:

$users = User::whereHas('posts')->get();

这个查询将返回所有至少有一篇文章发布的用户。

whereHas 方法还允许我们进一步筛选我们想要的结果。比如,我们想要获取发布了至少一篇标题包含“Laravel”关键字的文章的所有用户,我们可以这样写:

$users = User::whereHas('posts', function ($query) {
    $query->where('title', 'like', '%Laravel%');
})->get();

这个查询将返回符合条件的所有用户。

注意事项

当使用 whereHas 进行模型关联查询时,我们需要确保关联关系在模型之间建立起来。这就意味着我们需要在模型类中定义关联关系方法,例如:

class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

在这个例子中,我们定义了 User 模型与 Post 模型之间的 "一对多" 关联关系。

结论

whereHas 是一个非常有用的 Laravel Eloquent 查询方法,它允许我们通过关联关系对模型进行筛选,并以灵活的方式使用条件语句来进一步筛选所需结果。当你需要查询一组模型并对这些模型与其他相关模型进行筛选时,whereHas 是一个非常有用的方法。