首页 > 解决方案 > 如何在 Laravel 中对关系进行“相交”查询?

问题描述

我有一个模型“Pro”,它有一个像“langs_pro”这样的表。langs 表包含一种语言的简写(如 fr、en、es 等)。

在查询中,我想给出一组语言(比如说 hu、it、fr)并检查两个数组中是否至少有一个值相等。

但是,如何在不手动检索每个模型的情况下实现这一目标?有没有更简单的方法,比如 MySQL 查询?

标签: laravel

解决方案


您可以使用急切加载和 whereHas 查询:

Pro::with([
    "lang" => function($query) { $query->whereIn("language", ["it", "fr"]); }
])->whereHas("lang", function($query){
    $query->where("col", "value");
})->get();

注:“lang”为关系名称


推荐阅读