Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Версия Laravel: 5.5
Версия PHP: 7.0.22
Операционная система и её версия: Linux Mint 18.2 Sonya
Вендор и версия сервера БД: mysql Ver 14.14 Distrib 5.7.21, for Linux
Вендор и версия Веб-сервера: Apache/2.4.18
Медод подключения PHP: libapache2-mod
Задача, что должно происходить _в целом_, техническое задание:
Имеется модель товаров со связями 1-1 к категории и городу.
Необходимо выбрать n случайных записей той же категории, в том же городе, если в городе нет, тогда 4 случайных из той же категории, ну и если вообще нет 4, тогда сколько есть.
Что произошло, текст ошибки, если есть:
Повесил сервак. В логах говорит, что недостаточно памяти для выполнения скрипта.
Варианты/догадки, почему это произошло:
Не оптимизирован запрос, или вообще не верен.
Код:
app\Ad.php
public function related(){
$city_id = $this->city_id;
$cat_id = $this->category_id;
$ads = Ad::where('publish', 1)->where('category_id', $cat_id)->where('id', '!=', $this->id)->inRandomOrder();
if($ads->count() > 4){
$res = $ads->where('city_id', $city_id);
$count = $res->count();
if($count >= 4){
$res = $res->take(4)->get();
}else{
$res = $res->union($ads->take(4-$count))->get();
}
}else{
$res = $ads->get();
}
return $res;
}
Не в сети
Страницы 1