在使用yii2with、joinwith等关联查询的时候,我发现没有办法将外界的参数进行传递进去,例如:
$province_id=15;
$customers=Parks::find()->where(['id'=>2])
->width(['house'=>function($query){
$query->andWhere(['province_id'=>$province_id]);
}
])->asArray()->all();
这时候就会报错没有定义$province_id这个参数。这样的情况下我们使用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新增的闭包语法介绍function() use() {}
闭包: 内部函数使用了外部函数中定义的变量。
在PHP新开放的闭包语法中, 我们就是用use来使用闭包外部定义的变量的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。