Задать вопрос

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
  • Вопрос задан
  • 256 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    Язык программирования PHP
    1 неделя
    Далее
Решения вопроса 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);
                    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы