Использование Laravel Eloquent для подсчета, сколько раз что-то существует эффективным способом. - PullRequest
0 голосов
/ 19 июня 2019

У меня есть таблица, которая называется арендной платой, в каждой строке есть столбцы штат, город, почтовый индекс, которые идентифицируют все дома с другой таблицей с этой информацией. Есть около 3400 аренды. Я тяну каждый столбец, чтобы отчетливо отображать штаты, город и почтовый индекс. Мне нужно показать, сколько арендных плат в каждом. Я делаю это сейчас через ajax, человек начинает вводить то, что он хочет видеть, и он автоматически завершает его со счетчиком, но медленно из-за способа, которым я это делаю.

$rentals_count = Rentals::where('published',1)->get();
foreach($states as $state) {
    echo $state.”-“.$rentals_count->where(‘state’,$state->id)->count();
}

Выше примерно то, что я делаю с удаленными частями, потому что они не связаны с этим вопросом. Есть лучший способ сделать это? Это немного отстает, так что автозаполнение кажется сломанным для нового пользователя.

Ответы [ 3 ]

0 голосов
/ 19 июня 2019
$rentals = Rentals::wherePublished(true)->withCount('state')->get();

Когда вы выполните цикл $rentals, результат будет в $rental->state_count

0 голосов
/ 19 июня 2019

Установите отношение 'состояние' в прокате, затем назовите его следующим образом

$rentals_count = Rentals::where('published',1)->with('state')->get()->groupBy('state');

$rentals_count->map(function($v, $k){
          echo $v[0]->state->name .' - '. $v->count();
     });

Между тем в прокате Модель

public function state(){
    return $this->hasOne(State::class, 'state'); //state being your foreign key on rentals table. The primary key has to be id on your states table
}
0 голосов
/ 19 июня 2019

Рассматривали ли вы готовность загружать свой красноречивый запрос?Стремительная загрузка используется, чтобы уменьшить количество запросов.При запросе вы можете указать, какие отношения следует загружать, используя метод with:

$rental_counts = Rentals::where('published',1)->with('your_relation')->get();

Подробнее об этом можно прочитать в Документация Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...