4

ユーザーと注文の2つのコレクションがあります

ユーザーの詳細(電子メール、名前など)を含む注文のリスト(OrderSearchモデル)があります。ここで、ユーザーの詳細をリレーショナルに検索したいと思います。

OrderSearchモデル---

public function search($params)
    {
        // Email getting from query params
        if(!empty($params['email'])){
            $this->email = $params['email'];
        }

        $query = Order::find();
        $query->with(['user']); // for related document
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pagesize' => 10,
            ],
        ]);

        $this->load($params);


        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        $query->andFilterWhere([
            'id' => isset($this->id)?(int)$this->id:$this->id,
            'status' => $this->status,
            'user_id' => $this->user_id,
        ]);

        $query->andFilterWhere(['like', 'sku', $this->sku])
        ->andFilterWhere(['like', 'message', $this->message])
        // Tried below code but it is not working.
        ->andFilterWhere(['like', 'user.email', $this->email]); // $this->email is email which I want to search
        return $dataProvider;
    }

順序モデルの関係 -

public function getUser(){
    return $this->hasOne(User::className(), ['_id' => 'user_id']);
}
4

0 に答える 0