1. 程式人生 > >【TP5 :資料庫:查詢構造器:鏈式操作】join

【TP5 :資料庫:查詢構造器:鏈式操作】join

join

  • INNER JOIN: 等同於 JOIN(預設的JOIN型別),如果表中有至少一個匹配,則返回行
  • LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
  • FULL JOIN: 只要其中一個表中存在匹配,就返回行

說明

object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )

連貫操作方法,用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料。

引數

  • join:要關聯的(完整)表名以及別名

    支援三種寫法:

    寫法1:[ '完整表名或者子查詢'=>'別名' ]
    寫法2'完整表名 別名'
    寫法3'不帶資料表字首的表名'
  • condition:關聯條件。

    可以為字串或陣列, 為陣列時每一個元素都是一個關聯條件。

  • type:關聯型別。

    可以為:INNER、LEFT、RIGHT、FULL,不區分大小寫,預設為INNER。

返回值

模型物件

示例

//寫法1:[ '完整表名或者子查詢'=>'別名' ]

$subsql = Db::table('think_work')
    ->where(['status'=>1
])
->
field('artist_id,count(id) count') ->group('artist_id')->buildSql(); Db::table('think_user') ->alias('a') ->join([$subsql=> 'w'], 'a.artist_id = w.artist_id') ->select(); //因buildSql返回的語句帶有(),所以這裡不需要在兩端再加上()。
//寫法2'完整表名 別名'

Db::table('think_artist')
    ->
alias('a') ->join('think_work w','a.id = w.artist_id') ->join('think_card c','a.card_id = c.id') ->select();
//寫法3'不帶資料表字首的表名'

Db::table('think_artist')
    ->alias('a')
    ->join('__WORK__ w','a.id = w.artist_id')
    ->join('__CARD__ c','a.card_id = c.id')
    ->select();
//陣列形式

$join = [
    ['think_work w','a.id=w.artist_id'],
    ['think_card c','a.card_id=c.id'],
];
Db::table('think_user')->alias('a')->join($join)->select();
//RIGHT JOIN

Db::table('think_user')
    ->alias('a')
    ->join('word w','a.id = w.artist_id','RIGHT')
    ->select();

相關推薦

TP5 資料庫查詢構造操作join

join INNER JOIN: 等同於 JOIN(預設的JOIN型別),如果表中有至少一個匹配,則返回行 LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行 RIGHT JOIN: 即

TP5 資料庫查詢構造操作cache

cache cache方法用於查詢快取操作,連貫操作方法 用於select、find、value和column方法,以及其衍生方法 在快取有效期之內不會再次進行資料庫查詢操作,而是直接獲取快取中的資料 //find方法使用cache方法 Db::ta

TP5 資料庫查詢構造操作時間查詢

時間查詢 時間比較 使用where方法 where方法支援時間比較 // 大於某個時間 where('create_time','> time','2016-1-1'); //

TP5資料庫查詢構造操作

鏈式操作 資料庫提供的鏈式操作方法支援所有的CURD操作 使用示例: Db::table('think_user') ->where('status',1) ->order('create_time') ->l

第2條遇到多個構造引數時要考慮用構造

一、靜態工廠和構造器有個共同的侷限性:它們都不能很好地擴充套件到大量的可選引數。 二、重疊構造器模式可行,但是當有許多引數的時候,客戶端程式碼會很難編寫,並且仍然較難以閱讀—— Demo: 三、遇

java8第四課方法引用和構造引用

  這節課我們開始講方法引用和構造器引用,直接看程式碼   public class MethodReference {     /**      * 方法引用:一種lambda表示式的簡寫方

TP5基礎——03 查詢構造

Db類基本使用 我們在使用Db類時,需要引入think\Db。 使用原生SQL Db::query() 查詢操作 Db::excute()

讀書筆記-《Effective Java》第2條遇到多個構造引數時要考慮用構建

當一個類有很多個屬性時,建立物件的時候要麼就先建立個物件然後給物件賦值,要麼就根據業務需要寫很多個構造器, 這樣的構造器可讀性差。就算用靜態工廠也得寫很多個,這時候就可以用構建器了。 例如: package org.test; public class People { pr

thinkphp5 資料庫和模型詳解 之2 查詢構造及高階技巧

1、掌握查詢構造器對於掌握資料庫和模型的查詢操作非常關鍵 2、使用查詢構造器一般都是自動例項化查詢類,Db類的任何方法都會自動呼叫connect方法返回連線物件例項,然後呼叫連線物件的查詢構造器方法會自動例項化查詢類。 3、db助手函式預設每次呼叫都會重新連線資料庫(目的是

Laravel 操作資料庫DB facade(原始查詢) 、查詢構造、Eloquent ORM

一.DB facade連線資料庫操作檔案     config/database.php    .envDB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=roo

tp5查詢構造增刪改查返回什麼

版本:5.1 查詢資料 find 方法查詢結果不存在,返回 null,否則返回結果陣列 select 方法查詢結果是一個二維陣列,如果結果不存在,返回空陣列 value 方法查詢結果不存在,返回

Laravel學習篇-資料庫操作查詢構造

最近小編在學習號稱世界最牛框架–Laravel。其實學習框架也就是學習框架的思想! 我想在我的部落格中記錄我在laravel學習中的一些心得,歡迎大家關注我的其他Github部落格和簡書,互相交流! 版本:Laravel 5.2 資料庫:m

laravel之路-4 資料庫操作查詢構造

    正文之前想聊一些關於MVC的事情,接觸過很多專案,發現很多人還是很自然的把SQL寫到Ç層中,整個方法的資料庫操作完全沒有中號層什麼事,可維護性完全為0撒。試想如果有個表要改表名,改欄位名,我需要整個專案搜一下都有哪些地方用了這個表。如果產品需要監控某個表的所有操作日誌

第2條遇到多個構造引數時要考慮用構建

靜態工廠和構造器有個共同的侷限性:它們都不能很好地擴充套件到大量的可選引數。考慮用一個類表示包裝食品外面顯示的營養成份標籤。這些標籤中有幾個域是必需的:每份的含量、每罐的含量以及每份的卡路里,還有超過20個可選域:總脂肪量、飽和脂肪量、轉化脂肪、膽固醇、鈉等等。

laravel 數據庫操作查詢構造

操作 大數 avg 李冰冰 數據庫操作 排序 span var table /** * 新增數據 * / $bool = DB::table(‘wt_001‘)->insert([‘username‘=>‘冰

Thinkphp5基礎——03 查詢構造(Db類)

Db類基本使用 我們在使用Db類時,需要引入think\Db。 使用原生SQL Db::query() 查詢操作 Db::excute() 插入、更新、刪除操作 Db::getLast

laravel 查詢構造 (一)

DB::table() 查詢構造器 演示 插入 insert() insert 裡面寫陣列。 返回一個布林值。 DB::table('user_ali') -> insert(['ali_us

CodeIgniter 查詢構造(query builder)

最近開發專案時需要使用子查詢,研究一番後得出結果: <?php // Sub Query $this->db->select('*'); $this->db->from('TableB'); $subQuery = $this-&g

1-10.Laravel框架利用查詢構造完成CURD(二)

DB類操作資料庫 DB門面(功能類) 按照MVC 的架構,對資料的操作應該放在 Model 中完成,但如果不使用Model,我們也可以用 laravel框架提供的 DB 類操作資料庫。而且,對於某些極其複雜的sql,用Model 已經很難完成,需要開發者自己手寫sql語句

laravel 查詢構造 (二)

get() //從資料表中取得所有的資料列 first() //取一條資料列 where() //寫條件 select() // 查詢部分欄位 chunk() // 分塊查詢 pluck() // 取某欄位值 lists() // 取某欄位值