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
  • Вопрос задан
  • 241 просмотр
Решения вопроса 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);
                    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 14:10
500 руб./за проект
19 апр. 2024, в 13:31
10000 руб./за проект