Laravel 4 - Как получить доступ к внешним переменным из аванса, где

0

У меня есть метод области в моей модели с именем Book.

public function scopeBookAuthor($query, $input = array()){
    if($input['book_author'] != ''){
        return $query->where(function ($query) {
                    $query->where('book_author_last_name', 'LIKE', "%".$input['book_author']."%")
                          ->orWhere('book_author_middle_name', 'LIKE', "%".$input['book_author']."%")
                          ->orWhere('book_author_first_name', 'LIKE', "%".$input['book_author']."%");
                });

    }
}

Произошла ошибка внутри функции в третьей строке. это говорит о Undefined variable: input.

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

return $query->where(function ($query, $input) {...

Есть ли способ сделать это возможным? заранее спасибо.

  • 1
    Это зависит от того, хотите ли вы использовать объекты модели Eloquent ORM или просто массивы SQL, полученные в результате использования построителя запросов. Вам не хватает возвращаемого значения в замыкании. И если замыкание не имеет доступа к массиву $ input, вам нужно будет передать его функции.
  • 1
    Вы также вызываете $ query-> где внутри функции, которая передается в $ query-> где (я бы заставил функцию закрытия вернуть параметр vaild для $ query-> where () или просто удалить $ query-> where (напрямую после возврата и просто вернуть объект $ query из замыкания.
Теги:
eloquent
laravel-4

1 ответ

2
Лучший ответ

Есть грязный хак:

return $query->where(function ($query) use ($input){

Ещё вопросы

Сообщество Overcoder
Наверх
Меню