1

我正在使用具有 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 子句,这似乎不起作用。我做了所有事情,但 eloquent 没有注册 where 子句。我还尝试了一些东西来获取原生 SQL 查询并尝试了一些东西,但最终结果并不像我预期的那样。有没有人遇到过类似的问题?

谢谢

4

1 回答 1

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

其他地方好像有问题

于 2013-07-23T14:51:44.853 回答