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 不明な列 'inviteEmail' in 'where 句' (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 に答える