【TP5 :資料庫:查詢構造器:鏈式操作】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() // 取某欄位值