Laravel 5 Как передать несколько аргументов в функцию join через конструктор запросов?

Добрый день!

Мне необходимо в Laravel 5 в конструкторе запросов выполнить сложный join запрос в который нужно передать ряд аругментов.

Вот кусок кода:
$tickets->join($table, function ($join, $alpha, $attrs, $field, $i) {
    $join->on($alpha[$i].'.record_id', '=', 'records.id')
        ->where($alpha[$i].'.attr_id', '=', $attrs[$field]->attr_id);
    });


Я не нашел ничего другого как передать все аргументы по порядку, но судя по всему это неправильно.
Как по другому можно передать туда все необходимые переменные?

При выполнении происходит примерно следующая ошибка
Type error: Too few arguments to function App\Records::App\{closure}(), 1 passed and exactly 5 expected
  • Вопрос задан
  • 184 просмотра
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
А кто вам сказал, что туда можно передавать какие-то свои аргументы?
Читаем — php.net/manual/ru/functions.anonymous.php, «Пример #4 Замыкания и область видимости». Ну и вообще изучаем сначала РНР, а уже потом ларавел.
Ответ написан
Используйте use:

$tickets->join($table, function ($join) use ($alpha, $attrs, $field, $i) {
                        $join->on($alpha[$i].'.record_id', '=', 'records.id')
                            ->where($alpha[$i].'.attr_id', '=', $attrs[$field]->attr_id);
                    });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Smart Медицина Москва
от 150 000 ₽
Spice IT Recruitment Москва
До 230 000 ₽
Playkot Санкт-Петербург
от 150 000 до 200 000 ₽
06 июл. 2020, в 23:49
10000 руб./за проект
06 июл. 2020, в 23:32
35000 руб./за проект