Laravel 4 pivot(多对多)表 - 我什么时候使用 - > get()和:: with()

时间:2013-06-09 23:38:42

标签: php laravel laravel-4

使用 - > 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(),我会看到一个空白屏幕。有什么想法吗?

1 个答案:

答案 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上了解详情。