【发布时间】:2013-07-21 09:01:44
【问题描述】:
如何用Eloquent查询,所有没有某种证书的用户?
Laravel 4
我有 2 张桌子:
users table:
->id
->name
certificats table:
->id
->user_id
->certificate_type
我已经为此苦苦挣扎了好几个小时。我尝试的最后一件事是:
$users = User::with(array('certificate' => function($query)
{
$query->where('type','!=','SL');
}))->get();
这给了我所有的用户,但我试图让所有没有证书类型“SL”的用户。
--编辑: Spencer7593 下面的原始查询有效。但我没有让雄辩的查询工作。
SELECT u.*
FROM users u
LEFT
JOIN certificates c
ON c.user_id = u.id
AND c.type = 'SL'
WHERE c.user_id IS NULL
关系:
public function certificate(){
return $this->hasMany('Certificate');
}
public function certificate(){
return $this->belongsTo('User');
}
【问题讨论】:
-
这个有帮助吗:$query->where('certificate_type','!=','SL');
-
不,它没有:(,我也试过'certificate.type'。
-
type指的是证书表中的列,因此应该是正确的。您没有在其他任何可能覆盖它的地方重新定义$users变量吗?您的User模型中确实有适当的函数将其与证书相关联吗? -
我不会在其他任何地方重新定义 $users。我认为这种关系已经建立起来了。我在第一篇文章中添加了这种关系。
-
我认为问题在于建立你们的关系。
标签: php mysql laravel-4 relationship eloquent