mysql - 如何在 Laravel 中创建 where 语句以匹配来自另一个模型的字段

标签 mysql laravel eloquent

我怎样才能在 Laravel Controller 中实现这样的事情

$results = ModelA::with('model_b')->where('model_b.field_from_model_b',true)->get()

假设我已经像这样在模型 A 中建立了关系

function model_b(){
   return $this->hasMany('App\ModelB');
}

最佳答案

如果您想通过 ModelB 中的字段过滤 ModelA,请使用 whereHas() 方法:

ModelA::with('model_b')
    ->whereHas('model_b', function($q) {
        $q->where('field_from_model_b', true);
    })
    ->get();

如果你只是想过滤ModelB数据:

ModelA::with(['model_b' => function($q) {
        $q->where('field_from_model_b', true);
    }])
    ->get();

关于mysql - 如何在 Laravel 中创建 where 语句以匹配来自另一个模型的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48962618/

相关文章:

php - Laravel 获取文件名

php - 我如何在 laravel Eloquent 返回数组中使用 next() 或 current() ?

php - 如何使用 Eloquent 和 MySQL 按 last id 对分组结果进行排序?

mysql - 将 Max 函数与 datagridview 一起使用

javascript - 处理多个获取的 MySQL 数据的 JS 问题 [PHP, MySQL & JS]

java - 从数据库中检索数据时 (PreparedStatement prest) 的问题

php - MySQL 某些字符导致 'illegal mix of collations' 错误

php - 如何使用 PHP 从两个表生成动态内容

php - Laravel 5.2 IF 语句语法,根据值更改名称

php - Laravel - 使用 model::create() 时忽略不存在的字段