Laravel по-русски

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

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

#1 06.03.2019 15:17:49

Использование глобальных scope

Здравствуйте.
Я не догоняю что и как нужно для глобального scope из документации. С локальной всё просто - в моделе, которую используем , должна быть функция с префиксом "scope" и эта функция просто пишется в условии при выборке без префикса scope.
Но как быть с глобальной, если у меня есть, например модели product и order. А scope выполняет одно и то же действие в обеих моделях, сортирует по дате создания например. Что бы не писать функцию scope дважды в двух моделях, хотелось бы её единожды в каком то левом классе написать и использовать в нужный момент.

Не в сети

#2 06.03.2019 21:23:17

Re: Использование глобальных scope

Глобальный скоуп называется так, потому что он [ по умолчанию ] применяется ко всем запросам данной модели.

Да, чтобы применить один скуп к двум моделям, надо вставить его в обе модели smile Он и так один раз описан в отдельном классе. Ты просто применишь экземпляр этого класса в двух моделях.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 07.03.2019 09:55:09

Re: Использование глобальных scope

Спасибо, но вчера сделал немного по другому. В принципе как хотел, что б работали глобалки. То есть написал подобное -

$query = Model::when(count($param),function($q) use($param){
	return Search::scopeParams($q,$param);
});

Правда осталась проблема, если во входящих условиях нет нужных данных, ответ приходит пустая строка, а не часть для запроса. То есть -

public static function scopeParams($query, $params) {
    if('условие')
        return $query->where('условие');
    }elseif('нет удовлетворяющих параметров')
        return '';
}

Ниже идёт копирование запроса - $var = clone $query; И тут происходят ошибки.

Изменено Alexandr5 (07.03.2019 10:00:30)

Не в сети

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