2020-09-24 12:07:18 496次浏览 2条回答 0 悬赏 10 金钱

情况是这样的:订单表里关联了买家:user_id,卖家 seller_id。买家和卖家都在一个表里 user。需求是通过关联查询买家手机号 mobile 和卖家手机号 mobile 进行筛选。该如何写呢?我下面的写法是错的。

$query->joinWith(['user']);
$query->joinWith(['seller']);

$query->andFilterWhere(['user.mobile' => $this->user_mobile]);
$query->andFilterWhere(['user.mobile' => $this->seller_mobile]);
亿速云
  • 回答于 2020-09-25 11:47 举报
    $query->innerJoin('user',['id'=>'user_id']);
    $query->innerJoin('user',['id'=>'seller_id']);
    
  • 回答于 2020-09-25 11:53 举报

    加筛选条件:

    $query->joinWith([
        'user' => function ($query) {
            $query->andWhere(['mobile'=> $this->user_mobile]);
        },
    ])->joinWith([
        'seller' => function ($query) {
            $query->andWhere(['mobile'=> $this->seller_mobile]);
        },
    ])
    
    2 条回复
    回复于 2020-09-28 17:26 回复

    这样写有问题

    SELECT COUNT(*) FROM `orders` LEFT JOIN `user` ON `orders`.`user_id` = `user`.`id` WHERE (`mobile`='') AND (`mobile`='13646446304')
    E:\WWW\qianfang\chumeng\backend\views\orders\index.php:19
    E:\WWW\qianfang\chumeng\backend\controllers\OrdersController.php:43
    
    回复于 2020-09-29 12:05 回复

    你也可以用andFilterWhere

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
涛哥
见习主管

涛哥

注册时间:2014-12-28
最后登录:2020-10-16
在线时长:26小时43分
  • 粉丝2
  • 金钱110
  • 威望10
  • 积分470

热门问题