Рубрики
Uncategorized

Запрос ассоциации Yii2 загружает внешние параметры с использованием

Автор оригинала: David Wong.

При использовании запросов на ассоциацию, таких как yii 2 with и join with, я считаю невозможным передавать внешние параметры, такие как:

$province_id=15;
$customers=Parks::find()->where(['id'=>2])
          ->width(['house'=>function($query){
           $query->andWhere(['province_id'=>$province_id]);
          }
          ])->asArray()->all();

Это приведет к ошибке, которая не определяет параметр $province_id. В этом случае мы используем use use для загрузки внешних параметров: например

$province_id=15;
$customers=Parks::find()->where(['id'=>2])
          ->width(['house'=>function($query) use($province_id){
           $query->andWhere(['province_id'=>$province_id]);
          }
          ])->asArray()->all();

Это позволяет вам загружать. Почему это работает? Новая грамматика закрытия PHP 5.3 вводит функцию () use () {} Закрытие: внутренние функции используют переменные, определенные во внешних функциях. В новом синтаксисе открытого закрытия PHP мы используем переменные, определенные вне замыканий.

Соответствующая информация Новая грамматика закрытия PHP 5.3 вводит функцию () use () {}