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

时间:2013-07-23 14:24:59

标签: laravel laravel-4 eager-loading eloquent

我正在使用具有雄辩的laravel4,并且对于急切的加载问题存在一些问题。从官方网站http://laravel.com/docs/eloquent#eager-loading上的文档中,以下列方式使用预先加载:

$organizations = Organization::with(array('groups' => function($query) use ($groupIds)
{
   $query->where('name', '=', 'HQ_Admins');
))->get();

这是我的应用程序的示例代码。急切的加载通常有效,我得到所有组织都属于他们的组。问题是我在上面的示例代码中指定了一个where子句,这看起来不起作用。我做了一切,但雄辩没有注册where子句。我也尝试了一些东西来获取本机SQL查询并尝试了一些东西,但最后结果并不像我期望的那样。有没有人遇到过类似的问题?

由于

1 个答案:

答案 0 :(得分:2)

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

代码:

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 condition。它对我有用。我通过phpMyAdmin在users表中插入行时遇到的唯一问题是“deleted_at”字段不是NULL,所以我无法得到这个用户......

其他地方似乎有问题