如何在Laravel 4中正确使用带约束的急加载

如何在Laravel 4中正确使用带约束的急加载,laravel,laravel-4,eager-loading,eloquent,Laravel,Laravel 4,Eager Loading,Eloquent,我使用的laravel4很有说服力,并且在急切加载问题上有一些问题。根据官方网站上的文件,通过以下方式使用即时加载: $organizations = Organization::with(array('groups' => function($query) use ($groupIds) { $query->where('name', '=', 'HQ_Admins'); ))->get(); 这是我的应用程序中的一个示例代码。这种急切的加载通常是有效的,我得到了所有

我使用的laravel4很有说服力,并且在急切加载问题上有一些问题。根据官方网站上的文件,通过以下方式使用即时加载:

$organizations = Organization::with(array('groups' => function($query) use ($groupIds)
{
   $query->where('name', '=', 'HQ_Admins');
))->get();
这是我的应用程序中的一个示例代码。这种急切的加载通常是有效的,我得到了所有组织和属于它们的组。问题是我在上面的示例代码中指定了一个where子句,这似乎不起作用。我什么都做了,但Elount没有注册where子句。我还尝试了一些方法来获取本机SQL查询,并尝试了一些方法,但最终的结果与我预期的不一样。有没有人遇到过类似的问题


谢谢,我也试着做同样的事。我有公司和用户表。一家公司有很多用户

守则:

Route::get('testeager', function() {
    $companies = Company::with(array('users' => function($query) {
        $query->where('email', 'like', '%koko%');
    }))
    ->where('companies.id','=','54') // Put it here in order to debug easily. Take just one company
    ->get();

   //$queries = DB::getQueryLog();
   //dd($queries);

   return $companies;
 });
我添加了一个新用户,其电子邮件如下“koko@gmail.com以及注释和未注释的$query->where条件。这对我很有效。我遇到的唯一问题是,当我通过phpMyAdmin在users表中插入行时,“deleted_at”字段不是NULL,因此我无法获取该用户


似乎其他地方出了问题

好吧,在再次测试之后,我检查了一下,我误解了内部函数中的where子句。我希望,我只收到名称为'HQ_Admins'的组织以及该组织的组。现在我认识到所有的组织都被选中了,但是内部函数说,如果name='HQ_Admins',那么组也应该被选中。这是我的错,因为我弄错了文件。但是谢谢你的测试,它帮助了我。