• Thinkphp模型关联条件查询


    Thinkphp常常需要关联操作,数据库中需要用到join连接查询,根据对方的条件进行关联条件查询(同时获得两个表的数据

    这里有两个表:article(文章表)、comment(评论表):

    模型:

    //评论表
    class Comment extends Model
    {
        public function article() {
            //不设置bind的全部显示
            return $this->belongsTo(Article::class)->bind([
                "article_title"=>"title"
            ]);
        }
    }

    方法一:hasWhere关联条件查询:

        public function demo5(){
            //使用hasWhere根据article的条件查询(注:comment与article有关联),同时使用with把article查询出来:
            $list = Comment::hasWhere('article',[["title","like","%美国%"]])->with("article")->select()->toArray();
            

         //或者,效果一样 $list = Comment::with(['article'=>function($query){ $query->where("title","like","%量子%"); }])->select(); }

    注意:hasWhere在with前面

    sql语法:

    SELECT * FROM `comment` `Comment` INNER JOIN `article` `Article` ON `Comment`.`article_id`=`Article`.`id` 
    WHERE `Article`.`title` LIKE '%美国%'

    方法二:withJoin关联条件查询:

        public function demo5(){
            $comm = Comment::withJoin("article")->where("article.title","like","%美%")->select()->toArray();
        }

    sql语法:

    SELECT * FROM `comment` `comment` INNER JOIN `article` `article` ON `comment`.`article_id`=`article`.`id` 
    WHERE `article`.`title` LIKE '%美%'

    方法三:Join直接使用:

        public function demo5(){
            $comm = Db::name("Comment")
                ->alias("c")
                ->join("article a","a.id = c.article_id")
                ->where("a.title","like","%量子%")
                ->select()
                ->toArray();
        }

    注:1、haswhere的第1个参数模型关联方法名,和模型名称(article)一样,否则报错

      2、withJoin第1个参数模型关联方法名,要和模型名称article)一样,否则报错

      3、withJoin和haswhere默认是inner join

  • 相关阅读:
    js 操作cookie
    Java——简单实现学生管理系统
    虚方法--重载
    读取Devexpress内部的图标
    ToolTipController 事件触发显示时 避免闪烁的处理方法
    windowsAPI遍历文件夹(速度高于递归)
    XAF去掉View页面的编辑器
    禁用弹出提示框
    设置程序集(dll)引用路径,整洁美观
    WPF移动Window窗体(鼠标点击左键移动窗体自定义行为)
  • 原文地址:https://www.cnblogs.com/bushui/p/13576165.html
Copyright © 2020-2023  润新知