私は Laravel 4 を使用しています。問題のモデルは拡張されEloquent
ます。
2 つのモデルの間に関係がlisting
ありphoto
ます。listings
対応する を持たないのコレクションをコンパイルしていますphotos
。Eloquent には、関連するレコードを持つレコードを見つけるための便利な方法があります。
$listings = Listing::has('photos')->get();
has
メソッドの逆の存在を知りません。ある場合は、お知らせください。
とにかく、これは私が問題を解決した方法です:
// fetch all the listings, eagerly loading the photos relationship
$listings = Listing::with('photos')->get();
foreach ($listings as $key => $listing)
{
// if the listing has photos, remove it from the collection
if (count($listing->photos) != 0)
{
unset($listings[$key]);
}
}
これはうまくいきますが、知識を広げようとしています。collections に関する Laravelのドキュメントを読むと、コレクションをフィルタリングする例があります。
$users = $users->filter(function($user)
{
if($user->isAdmin())
{
return $user;
}
});
for
この方法を使用してループを書き直しました。
$listings = $listings->filter(function($listing)
{
// Keep listings with no photos
if (count($listing->photos) == 0)
{
return $listing;
}
});
結果の$listings
オブジェクトはどちらの場合も同じです。どちらか一方の方法を選択する説得力のある理由はありますか、それとも単に個人的な好みの問題ですか?