我有一些代码可以找到登录用户的ID,查找与该用户相关的所有客户并将“custref”(id)存储到数组中:
$chan = Yii::$app->user->identity->typedIdentity->getId();
$cust = Customer::find()->where(['channelref' => $chan])->all();
foreach($cust as $row){
$ref[] = $row->custref;
}
我想在查询中使用$ ref中的值,如下所示:
$query = $model::findNongeo()->where(['custref'=>$ref->custref])->all();
但我不知道怎么做,我尝试了各种各样的。任何帮助都将受到大力赞赏。
答案 0 :(得分:2)
这是最短的路。
$chanId = Yii::$app->user->identity->typedIdentity->getId();
$customerArray = Customer::find()->where(['channelref' => $chanId])->all();
$ref = yii\helpers\ArrayHelper::map($customerArray,'custref','custref');
您可以在其他查询中使用,例如
$query = $model::findNongeo()->where(['custref'=>$ref])->all();
或喜欢
$query = $model::findNongeo()->where(['in', 'custref', $ref])->all();
答案 1 :(得分:1)
您可以使用In
来使用数组中的值$model::find()->where(['in', 'custref', $ref])->all();
答案 2 :(得分:1)
你是对的。只需更改循环中的代码,如
$i = 0;
foreach($cust as $row){
$ref[$i++] = $row->custref;
}
答案 3 :(得分:1)
$ref = Customer::find()
->select('custref')
->where(['channelref' => Yii::$app->user->identity->typedIdentity->getId()])
->column();
$query = $model::findNongeo()
->where(['custref' => $ref])
->all();