laravel - 如何在 Laravel 中对关系进行“相交”查询?
问题描述
我有一个模型“Pro”,它有一个像“langs_pro”这样的表。langs 表包含一种语言的简写(如 fr、en、es 等)。
在查询中,我想给出一组语言(比如说 hu、it、fr)并检查两个数组中是否至少有一个值相等。
但是,如何在不手动检索每个模型的情况下实现这一目标?有没有更简单的方法,比如 MySQL 查询?
解决方案
您可以使用急切加载和 whereHas 查询:
Pro::with([
"lang" => function($query) { $query->whereIn("language", ["it", "fr"]); }
])->whereHas("lang", function($query){
$query->where("col", "value");
})->get();
注:“lang”为关系名称
推荐阅读
- typescript - 使用 Webpack 在项目上运行 `tsc` 会引发 webpack 中看不到的错误
- php - 通过 URL 将几列传递给 orderBy 方法
- angularjs - 状态中的 Angular 承诺解析为空
- python - 如何使用 Python 拆分最高数字的数字列表?
- css - 有没有办法用 CSS 中的背景视频覆盖页面?
- javascript - Javascript中String()和new String()的区别
- c++ - 处理弧度角和距离时的舍入问题。C++
- c - Ubuntu 16.04 是否正式支持 SCHED_DEADLINE?
- javascript - Node.js 需要来自网址的 JSON?
- java - 从服务器接收参数时 UI 不更新 - JavaFX