在使用yii2with、joinwith等關聯查詢的時候,我發現沒有辦法將外界的參數進行傳遞進去,例如:php
$province_id=15; $customers=Parks::find()->where(['id'=>2]) ->width(['house'=>function($query){ $query->andWhere(['province_id'=>$province_id]); } ])->asArray()->all();
這時候就會報錯沒有定義$province_id這個參數。這樣的狀況下咱們使用use來加載外界參數:例如yii2
$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新增的閉包語法介紹function() use() {}
閉包: 內部函數使用了外部函數中定義的變量。
在PHP新開放的閉包語法中, 咱們就是用use來使用閉包外部定義的變量的。閉包