chenbiao_o 2019-04-19 11:38 采纳率: 50%
浏览 476
已采纳

thinkphp5框架的查询可以解释一下这种查询的原理吗?

$videoLib = new VL();

$lists = $videoLib->alias('v')->field('v.*,c.videoCategoryName')->join('VideoLibCategory c','v.categoryId=c.id','LEFT')->where($map)->order('v.id desc')->limit($start,$limits)->select();

各位大神,有个问题请教一下,我接手了一个项目,但是项目里的查询用法是首先new一个模型类, 再用这个变量直接带条件去查询,表名都没有这些数据是怎么查出来的?图片说明

  • 写回答

3条回答 默认 最新

  • qq_22607961 2019-04-19 17:42
    关注
    $videoLib = new VL(); //没有看到这个的定义,应该是实例化这个VideoLib这个表的model
    
    $lists = $videoLib->alias('v')->field('v.*,c.videoCategoryName')->join('VideoLibCategory c','v.categoryId=c.id','LEFT')->where($map)->order('v.id desc')->limit($start,$limits)->select();
    //
    ->alias('v')这个是指vl设置VideoLib这个表的别名为 'v'  就是数据库连接查询中的定义别名
    ->field() 这部分主要是需要获取哪些字段,这个里面就是VideoLib表里面的全部字段和VideoLibCategory 这个表里面的videoCategoryName字段
    ->join('VideoLibCategory c','v.categoryId=c.id','LEFT')这部分就是左连接VideoLibCategory这张表,关联的字段是VideoLib表的categoryId字段和VideoLibCategory 的id字段,关联的方式使用左连接的方式
    ->where($map) 这个就是筛选的条件
    ->order('v.id desc')这个是排序,是按照VideoLib的id降序排序
    ->limit($start,$limits) 这个是查询的记录数,第一个是起始位置,第二个是查询的记录数
    ->select(); 这个就是查询出符合条件的记录了
    
    这句大致相当于的sql是: select v.*,c.videoCategoryName from VideoLib as v left join VideoLibCategory as c on v.categoryId=c.id where $map 部分  order by v.id desc  limit $start,$limit
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作