我正在使用 Laravel 4;有问题的模型扩展Eloquent
。
我在两个模型之间建立了关系,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]);
}
}
这工作得很好,但我正在努力扩展我的知识。阅读有关集合的 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
对象在两种情况下都是相同的。是否有任何令人信服的理由选择一种方法而不是另一种方法,或者仅仅是个人喜好问题?