With() laravel 中的 Where 子句不起作用

Where clause in With() laravel doesn't work

你好,我在 Laravel 5 中使用 eloquent 有点问题。

我有这个功能:

$lists = Model::with(array('relation_with_registered_in_model'=>function($query){
                $query->where("name","cccc");
          }))->get();

我的问题是 return 总是所有结果,忽略 where 子句。

我尝试打印我的查询(使用函数生成),如果我在我的 phpmyadmin 中执行查询,它 return 正确过滤结果。

我哪里错了?

你可以试试单引号

$lists = Model::with(array('relation_with_registered_in_model'=>function($query){
                $query->where('name','cccc');
          }))->get();

我已经解决并理解我的错误:

在这篇文章中解释了https://laracasts.com/discuss/channels/general-discussion/problem-with-the-eager-loading-of-laravel-eloquent-orm?page=1

// gets only models that have relation matching the closure constraint
// no eager loading of the relation!
Model::whereHas('relation', function ($q) { ...} ); 

// gets ALL models
// and eager loads the relation, but only rows matching the constraint
Model::with(['relation' => function ($q) { ...} ]);