关于jionWith关联查询匿名函数的参数传递问题 [ 求助交流 ]
场景: orders订单表存储用户表user的id, user表的包含用户信息,昵称等 AR已经配置好关系
需求:查询订单时,可以通过用户昵称来进行查询订单信息
但是发现无法传递需要搜索的用户昵称变量,因为匿名函数无法访问外部函数的变量,作用域导致的。 假如匿名函数可以再传递一个参数,用于将外部变量传递入匿名函数,就完美了
假设可以这样
$query = Orders::find();
$query->joinWith([
'user user' => function (\yii\db\ActiveQuery $query,array $userParams){
$query->where(['like','user.name',$userParams['keyword']);
}
],true,'INNER JOIN');
有同学就会说了,可以定义一个全局变量。是的,完全可以,但是能传递变量不是更好麽。
目前的做法是,使用Yii::$app->params来进行变量的传递
共 2 条回复
wcy00q
注册时间:2016-01-15
最后登录:2017-02-13
在线时长:1小时42分
最后登录:2017-02-13
在线时长:1小时42分
- 粉丝1
- 金钱35
- 威望0
- 积分45