我正试图获得一些帮助,以重写一些在我正在努力提高速度的项目中扔给我的东西。我正在使用 Laravel 5.4 。我可以尝试计算多少辆车没有图像而不循环通过每辆车。
每辆车的vehicle_id都会更正vimages表中的vehicle_id col。
我试图消除不必遍历每辆车并为每辆车进行单独的SQL调用的情况。
我要计数的功能:
'missingDescription' => $inv->where('vehicle_type','=','NEW')->where('description','=', '')->where('description','=', null)->count(),
要计数的原始函数:
'images' => $inventories->filter(function($row) {
if ($row->Images()->get()->count() <= 0) {
return true;
}
return false;
})->count(),
'stockphotos' => $inventories->filter(function($row) {
return $row->Images()->get()->filter(function($item) {
return $item->isStockPhoto && !$item->isDeleted;
})->count() > 0 ? true : false;
})->count(),
图片功能:
public function images() {
return $this->hasMany('App\Vimage');
}
答案 0 :(得分:1)
您可以使用withCount。因此,当您最初获取模型时,请添加withCount('images'),该操作会将images_count附加到返回的模型中。
$inventories = Inventory::withCount('images')->get();
'images' => $inventories->where(images_count, 0)->count()
这是laravel页面,仅供参考Querying Relationship Absence
答案 1 :(得分:0)
您需要使用搜索闭包作为描述,因为您要查找的是空字符串还是null。
'missingDescription' => $inv->where('vehicle_type','=','NEW')
->where(function($query) {
$query->where('description','=', '')
->orWhereNull('description');
})->count(),