Laravel Count Vehicles W / O Изображения - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь получить некоторую помощь, чтобы переписать кое-что, что было брошено на меня в проекте, над которым я работаю, чтобы увеличить скорость.Я работаю в Laravel 5.4 .Я могу попытаться подсчитать, сколько транспортных средств не имеют изображений, не просматривая каждое транспортное средство.

У каждого транспортного средства есть идентификатор vehicle_id, который соответствует столбцу vehicle_id в таблице vimages.

Я пытаюсь избавиться от необходимости циклически проходить через каждое отдельное транспортное средство и делать отдельные вызовы 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');
    }

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете использовать сCount.поэтому, когда вы получаете модель, первоначально добавьте withCount ('images'), который добавит images_count к возвращенной модели.

$inventories = Inventory::withCount('images')->get();

'images' => $inventories->where(images_count, 0)->count()

Вот страница laravel для справки Запрос отсутствия отношений

0 голосов
/ 24 октября 2018

Вам нужно использовать поисковое закрытие для описания, так как вы ищете, где это либо пустая строка, либо НУЛЬ.

'missingDescription' => $inv->where('vehicle_type','=','NEW')
                              ->where(function($query) {
                                  $query->where('description','=', '')
                                     ->orWhereNull('description');
                               })->count(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...