thinkphp怎麼查詢多個資料

2022-12-05 10:00:19

thinkphp查詢多個資料的方法:1、使用Table方法進行多表查詢,語法如「$Model->table('think_blog blog,think_type type')」;2、使用Join方法進行查詢,程式碼如「$Model->join('work ON artist.id = work.artist_id')」。

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境:Windows7系統、ThinkPHP5版、Dell G3電腦。

thinkphp怎麼查詢多個資料?

THINKPHP 中關聯查詢(多表查詢)

THINKPHP 中關聯查詢(多表查詢)可以使用 table() 方法或和join方法,請看範例:

1、Table方法:定義要操作的資料表名稱,可以動態改變當前操作的資料表名稱,需要寫資料表的全名,包含字首,可以使用別名,例如:

$Model->Table('think_user user')
->where('status>1')
->select();
$Model->table('think_blog blog,think_type type')
->where('blog.typeid=type.id')
->field('blog.id as id,blog.title,blog.content,type.typename as type')
->order('blog.id desc' )
->limit(5)
->select();
登入後複製

Table方法的引數支援字串和陣列,陣列方式的用法:

$Model->Table(array('think_user'=>'user','think_group'=>'group'))
->where('status>1')
->select();
登入後複製

使用陣列方式定義的優勢是可以避免因為表名和關鍵字衝突而出錯的情況。

注:如果不定義table方法,預設會自動獲取當前模型對應或者定義的資料表。

2、Join方法:查詢Join支援,Join方法的引數支援字串和陣列,並且join方法是連貫操作中唯一可以多次呼叫的方法。例如:

$Model->join('work ON artist.id = work.artist_id')
->join('card ON artist.card_id = card.id')
->select();
//Left Join
$Model->table('user U')
->join('news N on U.id=N.cid')
->field('U.*,N.*')
->order('id desc')
->limit('8')
->findall();
登入後複製

預設採用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成

$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')
->select();
//Right Join
$Model->table('user U')
->join(array('right','news N on U.id=N.cid'))
->field('U.*,N.*')
->order('id desc')
->limit('8')
->findall();
登入後複製

如果join方法的引數用陣列的話,只能使用一次join方法,並且不能和字串方式混合使用。

$Model->join(array(' work ON artist.id = work.artist_id', 'card ON artist.card_id = card.id'))
->select()
登入後複製

運用這種連貫操作方法,可以有效的提高資料查詢的程式碼清晰度和開發效率。

檢視連貫操作的SQL語句的方法:

echo $Model->getLastSql(); //列印一下SQL語句,檢視一下
登入後複製

例2:

1、table()

$list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();
登入後複製

2.1、join()2表查詢

$user = new Model('user');
$list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' );
登入後複製

2.2、join() 多表查詢

        $list = $Form->join('think_sort ON think_form.sort_id = think_sort.sort_id' )->join('think_brand ON think_form.brand_id = think_brand.brand_id' )->select();
登入後複製

3、原生查詢

$Model = new Model();
$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;
$voList = $Model->query($sql);
登入後複製

推薦學習:《》

以上就是thinkphp怎麼查詢多個資料的詳細內容,更多請關注TW511.COM其它相關文章!