1

使用 ->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 userswhere inviteEmail= ?)(绑定:数组(0 => 'test@email.com',))

如果我放弃->get()然后我得到一个空白屏幕。有任何想法吗?

4

1 回答 1

0

email要使用=获取所有嵌套test@email.com,请使用 Eager Loading Constraints。假设你确实有一Nest堂课,你应该这样做:

$nests = Nest::with(array('user' => function ($query) {
    $query->where('nests_users.email', '=', 'test@email.com');
}));

您可以在官方文档中阅读更多相关信息。

于 2013-06-10T03:03:09.567 回答