2018-11-26 15:59:01 1690次浏览 2条回答 0 悬赏 10 金钱
$query1 = $query2 = Goods::find()->where(['user_id'=>1]);//这儿公用的联合查询和条件比较多

$data1 = $query1->andWhere(['status'=>10])->asArray()->all();

//在这会报错,因为此时的 query2 已经包含 status = 10, 请问这个怎么解决呢?
$data2 = $query2->andWhere(['status'=>20])->asArray()->all();

最佳答案

  • 少年侠气 发布于 2018-11-26 16:37 举报

    这个问题的我遇见过。

    $query1 =Goods::find()->where(['user_id'=>1]);
    $query2 = clone $query1;//克隆复制
    $data1 = $query2->andWhere(['status'=>10])->asArray()->all();
    

    这样做的话就没有问题了

    , 觉得很赞
  • 回答于 2023-03-06 18:22 举报
    $query1 = Goods::find()->where(['user_id'=>1]);
    $query2 = clone $query1;
    
    $data1 = $query1->andWhere(['status'=>10])->asArray()->all();
    
    // 这里不会再出现错误,因为 $query2 是 $query1 的一个副本,不会影响原始查询
    $data2 = $query2->andWhere(['status'=>20])->asArray()->all();
    
    
    
您需要登录后才可以回答。登录 | 立即注册
三思后行
助理

三思后行

注册时间:2017-09-08
最后登录:2019-03-18
在线时长:7小时5分
  • 粉丝0
  • 金钱30
  • 威望0
  • 积分100

热门问题