Yii2在查询中使用数组中的数据

时间:2017-11-08 16:14:11

标签: php sql yii2

我有一些代码可以找到登录用户的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();

但我不知道怎么做,我尝试了各种各样的。任何帮助都将受到大力赞赏。

4 个答案:

答案 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();