Laravel по-русски

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

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

#1 24.11.2017 20:18:37

Как сформировать запрос к db если несколько where добавляются в цикле?

У меня на вход в метод поступают четыре массива. Два $columns1[] и $columns2[], которые содержат имена столбцов. И два $filters1[] и $filters2[], которые содержат поисковые фильтры. Как можно перебирая в цикле значения этих столбцов, сформировать запрос к бд? Не могу сообразить как это делается через eloquent. То же самое касается и update.
Конечный запрос будет выглядеть примерно так:

$data::where($columns1[0], '=', $filters1[0])
            ->where($columns1[1], '=', $filters1[1])
            ...
            ->where($columns1[n], '=', $filters1[n])
            ...
            ->update($columns2[0] => $filters2[0],
                    $columns2[1] => $filters2[1],
                    ...
                    $columns2[n] => $filters2[n],

Изменено Antuan (24.11.2017 21:44:57)

Не в сети

#2 24.11.2017 22:11:05

Re: Как сформировать запрос к db если несколько where добавляются в цикле?

[CODE]
$where = array_combine($columns1, $filters1);
[/CODE]

$data::where($where);

Изменено covobo (24.11.2017 22:11:19)

Не в сети

#3 24.11.2017 22:26:24

Re: Как сформировать запрос к db если несколько where добавляются в цикле?

$where = array_combine($columns1, $filters1);

Фантастика в одну строку! smile
А как добиться похожего результата и для апдейта?

Не в сети

#4 24.11.2017 22:29:15

Re: Как сформировать запрос к db если несколько where добавляются в цикле?

[QUOTE]А как добиться похожего результата и для апдейта?[/QUOTE]
Это вопрос с подвохом? =)

[CODE]
$where = array_combine($columns1, $filters1);
$update = array_combine($columns2, $filters2);
$data::where($where)->update($update);
[/CODE]

Не работает что ли?

Кстати, в цикле бы тоже все работало.

Изменено covobo (24.11.2017 22:30:25)

Не в сети

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