При использовании запросов на ассоциацию, таких как 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 () {}