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