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

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 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
                    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽