• <li id="ruTcz"></li>

      • <span id="ruTcz"></span>

      • 关联统计的时候,构建的sql语句别名错误

        浏览:825 发布日期:2019/10/16
        5.0.0 - 致命 - 未处理
        当使用withCount 作为关联统计的时候,获取的表前缀是真实的数据表名,而不是模型名(model名跟数据库表不一样),导致sql执行失败$orders = Order::field('u_id,addtime')
                    ->withJoin([
                        'user' => ['nc'=>'user_name']
                    ], 'LEFT')
                    ->withCount(['orderList'=>'product_count'],'id')
                    ->where('h_id', $id)
                    ->find();
        生成的sql语句SELECT 
          `order`.`u_id`,
          `order`.`addtime`,
          `nc` AS `user_name`,
          (SELECT 
            COUNT(*) AS tp_count 
          FROM
            `oders_lists` `count_table` 
          WHERE (
              `count_table`.`od_nums` = orders.od_nums
            )) AS `product_count` 
        FROM
          `orders` `order` 
          LEFT JOIN `users` `user` 
            ON `order`.`u_id` = `user`.`id` 
        WHERE `h_id` = 48 
        LIMIT 1 
        下面是order ,上面是orders

        源码部分 return $this->query->alias($aggregate . '_table')
                    ->whereExp($aggregate . '_table.' . $this->foreignKey, '=' . $this->parent->getTable() . '.' . $this->localKey)
                    ->fetchSql()
                    ->$aggregate($field);
        评论(
        后面还有条评论,点击查看>>