Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.02.2018 18:24:28

Запрос на выборку родственных записей.

Версия 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;
    }

Не в сети

Подвал раздела