本文實例講述了tp5.1 框架join方法用法。分享給大家供大家參考,具體如下:
JOIN
方法用于根據兩個或多個表中的列之間的關系,從這些表中查詢數據。join通常有下面幾種類型,不同類型的join操作會影響返回的數據結果。
- INNER JOIN: 等同于 JOIN(默認的JOIN類型),如果表中有至少一個匹配,則返回行
- LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
- RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
- FULL JOIN: 只要其中一個表中存在匹配,就返回行
說明
1
2
3
4
|
join ( mixed join [, mixed $condition = null [, string $type = 'INNER' ]] ) leftJoin ( mixed join [, mixed $condition = null ] ) rightJoin ( mixed join [, mixed $condition = null ] ) fullJoin ( mixed join [, mixed $condition = null ] ) |
參數
join
要關聯的(完整)表名以及別名
支持的寫法:
- 寫法1:[ '完整表名或者子查詢'=>'別名' ]
- 寫法2:'不帶數據表前綴的表名'(自動作為別名)
- 寫法2:'不帶數據表前綴的表名 別名'
condition
關聯條件??梢詾樽址驍到M, 為數組時每一個元素都是一個關聯條件。
type
關聯類型。可以為:`INNER`、`LEFT`、`RIGHT`、`FULL`,不區分大小寫,默認為`INNER`。
返回值
模型對象
舉例
1
2
3
4
5
|
Db::table( 'think_artist' ) ->alias( 'a' ) ->join( 'work w' , 'a.id = w.artist_id' ) ->join( 'card c' , 'a.card_id = c.id' ) ->select(); |
1
2
3
4
5
|
Db::table( 'think_user' ) ->alias( 'a' ) ->join([ 'think_work' => 'w' ], 'a.id=w.artist_id' ) ->join([ 'think_card' => 'c' ], 'a.card_id=c.id' ) ->select(); |
默認采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
1
2
3
4
|
Db::table( 'think_user' ) ->alias( 'a' ) ->leftJoin( 'word w' , 'a.id = w.artist_id' ) ->select(); |
表名也可以是一個子查詢
1
2
3
4
5
6
7
8
9
10
|
$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(); |
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
原文鏈接:https://blog.csdn.net/qq_42176520/article/details/89518292