ThinkPHP5聯合(關聯)查詢、多條件查詢與彙總查詢執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了ThinkPHP5聯合(關聯)查詢、多條件查詢與彙總查詢,結合執行個體形式總結分析了thinkPHP5常用查詢操作技巧,需要的朋友可以參考下

本文執行個體講述了ThinkPHP5聯合(關聯)查詢、多條件查詢與彙總查詢。分享給大家供大家參考,具體如下:

一、聯合(關聯)查詢

1. 項目表

DROP TABLE IF EXISTS `darling_project`;CREATE TABLE `darling_project` ( `project_id` int(32) NOT NULL AUTO_INCREMENT, `project_name` varchar(20) NOT NULL, `create_time` int(32) NOT NULL, PRIMARY KEY (`project_id`), UNIQUE KEY `project_id` (`project_id`), UNIQUE KEY `project_name` (`project_name`));

2. 版本號碼表

DROP TABLE IF EXISTS `darling_version`;CREATE TABLE `darling_version` ( `version_id` int(32) NOT NULL AUTO_INCREMENT, `project_id` int(32) NOT NULL, `version_name` varchar(128) NOT NULL, `create_time` int(32) NOT NULL, PRIMARY KEY (version_id), UNIQUE KEY `version_id` (`version_id`));

3. 聯集查詢

$where=array(  "version_id"=>$_POST['version_id']);$Project_version = model('Project')->join("darling_version","darling_version.project_id = darling_project.project_id")->where($where)->find();

二、多條件查詢

方法一:

把查詢條件放到數組裡作為where函數參數,但是如果有大於小於這樣的條件參數,數組裡是無法賦值的。

例1:

$where=array(  "version_name"=>$version_name,  "project_name"=>$project_name);$userdata=$this->where($where)->find();

例2:

$where=array(   "version_name"=>$version_name,   "project_name"=>$project_name);$userdata=$this->where($where)->select();

例3:

$where=array(  "version_id"=>$version_id);$version_name = model("Version")->where($where)->field("version_name")->find();

方法二:

把多個SQL查詢語句作為where 參數,這樣就支援大於小於這樣的條件了。

$package = model('admin/Package')->where("project_id=".$Project_version['project_id']." and version_id=".$Project_version['version_id']." and status>1")->order('create_time desc')->find();

方法三:

把SQL查詢語句放到多個where函數裡

$package = model('admin/Package')->where("project_id=".$Project_version['project_id'])->where("version_id=".$Project_version['version_id'])->where("status>1")->order('create_time desc')->find();

三、彙總max 函數

1. 如下可以返還最新插入的升級包,但是只會返還create_time 這個欄位,不能返回整條記錄的欄位。

$package = model('admin/Package')->where("project_id=".$Project_version['project_id'])->where("version_id=".$Project_version['version_id'])->where("status>1")->max(create_time)

2. 所以可以使用下面這個達到找出最新插入的記錄並返還整條記錄欄位,先做order 排序,再find第一個記錄。

$package = model('admin/Package')->where("project_id=".$Project_version['project_id'])->where("version_id=".$Project_version['version_id'])->where("status>1")->order('create_time desc')->find();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.