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

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

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

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