我正在使用Laravel 4;有問題的車型延伸Eloquent
。在這種情況下,是否有充分的理由使用閉包而不是for循環?
我有兩個型號,listing
和photo
之間的關係。我正在編譯listings
的集合,它們沒有任何對應的photos
。雄辯有發現DO有相關記錄的記錄一個方便的方法:
$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]);
}
}
這只是正常的,但我想擴大我的知識。讀取Laravel documentation on collections,有濾波的集合的例子:
$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
對象是相同的這兩種情況下。是否有任何強有力的理由選擇一種方法,還是僅僅是個人偏好?