使用 - > get()时,我的多对多关系没有得到任何结果。我正在用以下方法测试我的关系:
第一部分有效。我在数据透视表中获得了所有拥有test@email.com的巢。但是,我从特定用户ID返回结果。我不想那样做。
Route::get('/test', function () {
foreach(User::find(2)->nest()->where('inviteEmail', '=', 'test@email.com')->get() as $nest)
echo $nest->name, ': ', $nest->pivot->inviteEmail, "</br>";
});
我希望得到与电子邮件相关的所有巢穴。我认为这样可行:
foreach(User::with('nest')->where('inviteEmail', '=', 'test@email.com')->get() as $nest)
echo $nest->name, ': ', $nest->pivot->inviteEmail, "</br>";
});
但我得到了这个:
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'inviteEmail'(SQL:select * from
users
其中inviteEmail
=?)(绑定:数组(0 = &gt;'test@email.com',))
如果我放弃->get()
,我会看到一个空白屏幕。有什么想法吗?
答案 0 :(得分:0)
要使用email
= test@email.com
获取所有嵌套,请使用Eager Loading Constraints。假设你有一个Nest
类,那就是你应该这样做的:
$nests = Nest::with(array('user' => function ($query) {
$query->where('nests_users.email', '=', 'test@email.com');
}));
您可以在official documentation上了解详情。