2016-07-07 11:28:06 3781次浏览 1条回答 0 悬赏 50 金钱

有三张表需要通过中间表关联查询,中间表关联字段 两个关联字段数据类型不一样,需要转换一下。怎么转换。如下图(错误代码)
AR查询 ziduanzhuanhuan34.png

正确的sql语句
如何转换成下面正确的sql
SELECT COUNT(*) FROM "report_record" LEFT JOIN "users" ON "report_record"."ident" = "users".uuid || '' LEFT JOIN "user_certs" ON "users"."uid" = "user_certs"."uid" LEFT JOIN "room" ON "report_record"."rid" = "room"."rid"

最佳答案

  • koko 发布于 2016-07-07 11:42 举报

    数据类型转换?你给的语句好像也没转换吧

    4 条回复
    回复于 2016-07-07 11:47 回复

    有三个表,UserCerts表,users表,report_record表。users表是中间关联表,关联字段是uuid(数据类型是uuid类型)关联report_record表的ident(varchar数据类型)字段,我现在是想把users表的uuid字段转换为字符串类型。就像上面完成正确的sql语句那种转换,怎么在AR操作中实现

    回复于 2016-07-07 12:29 回复

    ar里也可以直接这样写语句。另外,你在数据库里设置好外键后,用GIi应该能自动生成相应的代码

    回复于 2016-07-07 14:15 回复

    AR 直接写?怎么写? 在search model 里面怎么关联写

    回复于 2016-07-07 14:45 回复

    举个例子

            $category = \frontend\models\ScoreOldCategory::find()
                ->from('score_old_category as category') //定义别名
                ->leftJoin('score_category_menu as menu','menu.id = category.menu_id') //联合查询项目分类名称
                ->select('category.id , category.menu_id , category.name , category.base_score , menu.name as menu_name')
                ->where(['time_id'=>$active_time_id])
                ->orderBy('menu.id')
                ->asArray()->all();
    
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
chuanqi
见习主管

chuanqi 深圳市

注册时间:2016-04-27
最后登录:2016-07-19
在线时长:11小时31分
  • 粉丝1
  • 金钱125
  • 威望10
  • 积分335

热门问题