yii2 關聯查詢用use加載外界參數

在使用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來使用閉包外部定義的變量的。閉包

相關資料
php 5.3新增的閉包語法介紹function() use() {}yii

相關文章
相關標籤/搜索