Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте.
Я не догоняю что и как нужно для глобального scope из документации. С локальной всё просто - в моделе, которую используем , должна быть функция с префиксом "scope" и эта функция просто пишется в условии при выборке без префикса scope.
Но как быть с глобальной, если у меня есть, например модели product и order. А scope выполняет одно и то же действие в обеих моделях, сортирует по дате создания например. Что бы не писать функцию scope дважды в двух моделях, хотелось бы её единожды в каком то левом классе написать и использовать в нужный момент.
Не в сети
Глобальный скоуп называется так, потому что он [ по умолчанию ] применяется ко всем запросам данной модели.
Да, чтобы применить один скуп к двум моделям, надо вставить его в обе модели Он и так один раз описан в отдельном классе. Ты просто применишь экземпляр этого класса в двух моделях.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Спасибо, но вчера сделал немного по другому. В принципе как хотел, что б работали глобалки. То есть написал подобное -
$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)
Не в сети
Страницы 1