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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵