我正在使用具有雄辩的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查询并尝试了一些东西,但最后结果并不像我期望的那样。有没有人遇到过类似的问题?
由于
答案 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,所以我无法得到这个用户......
其他地方似乎有问题