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
转 : https://www.cnblogs.com/bushui/p/13576165.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析