Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Использую scope c селектом в составе.
В одном месте мне нужно вызвать этот scope с другим селектом.
Можно ли из $query как-то убрать один ->select() и заменить его на другой?
Не в сети
всё зависит от более конкретного примера, навскидку как пример:
$q = Model::query();
if($a > $b):
$q->select('field_1', 'field_2');
else:
e$q->select('field_1', 'field_3');
endif;
$out = $q->get();
или
$select = ['field_1'];
if($a > $b):
array_push($select, 'field_2');
else:
array_push($select, 'field_3');
endif;
$out = Model::select(implode(',', $select))->get();
или
$out = Model::select(function($query) use ($a,$b)
{
if($a > $b):
$query->select('field_1', 'field_2');
else:
$query->select('field_1', 'field_3');
endif;
})
->get();
If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.
Не в сети
Я имел в виду не переменную, а возможность отменить предыдущий селект и задать новый. Есть такое?
Не в сети
отменить нельзя, можно только клонировать предварительно выбранные данные без селекта.
If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.
Не в сети
В общем, вижу, что сырые запросы или набор их в строку будет легче при сложных выборках.
Например, выбрать продукты одной категории (многие ко многим), имеющим параметрами цвета красный или жёлтый, размеры 42, 43, 44, фирмы Адидас или Найк.
Не в сети
Страницы 1