關(guān)于ThinkPHP的join關(guān)聯(lián)查詢不使用默認(rèn)的表前綴

下面由thinkphp教程欄目給大家介紹thinkphp 的join關(guān)聯(lián)查詢不使用默認(rèn)的表前綴,希望對(duì)需要的朋友有所幫助!

ThinkPHP 的join關(guān)聯(lián)查詢不使用默認(rèn)的表前綴

關(guān)于ThinkPHP 的關(guān)聯(lián)查詢,官方文檔是這樣描述的:
關(guān)于ThinkPHP的join關(guān)聯(lián)查詢不使用默認(rèn)的表前綴

上述join函數(shù)中需要三個(gè)參數(shù),分別是:

join

要關(guān)聯(lián)的(完整)表名以及別名,支持三種寫法:

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

寫法1:[ '完整表名或者子查詢'=>'別名' ] 寫法2:'完整表名 別名' 寫法3:'不帶數(shù)據(jù)表前綴的表名'

condition

關(guān)聯(lián)條件,可以為字符串或數(shù)組, 為數(shù)組時(shí)每一個(gè)元素都是一個(gè)關(guān)聯(lián)條件。

type

關(guān)聯(lián)類型,可以為: INNER、LEFT、RIGHT、FULL,不區(qū)分大小寫,默認(rèn)為INNER。

不同前綴

一般情況下,都是一個(gè)數(shù)據(jù)庫(kù)中查詢的,這樣的情況下默認(rèn)使用的都是相同的表前綴,比如(shop_),所以在使用數(shù)據(jù)庫(kù)模型關(guān)聯(lián)查詢時(shí)往往都是這樣寫的:

Order::alias('o')      ->join('user u', 'o.user_id = u.id')      ->select();

在以上代碼中,因?yàn)槭鞘褂媚P筒樵儯阅J(rèn)都會(huì)加上表前綴,兩張表的完整表名就是shop_ordershop_user,而關(guān)聯(lián)類型則默認(rèn)為INNER關(guān)聯(lián)。

但這時(shí)如果關(guān)聯(lián)了一張不同前綴的表(比如:pay_record),上述的查詢語(yǔ)句顯然就行不通了,這時(shí)就需要在關(guān)聯(lián)語(yǔ)句處稍作修改,修改后的代碼如下:

Order::alias('o')      ->join(['pay_record' => 'r'], 'o.pay_id = r.id')      ->select();

這樣便能使用模型關(guān)聯(lián)不同前綴的表進(jìn)行查詢了。

總結(jié)

上述的方式其實(shí)也就是把join函數(shù)中的join參數(shù)由字符串修改為數(shù)組;ThinkPHP是一個(gè)很優(yōu)秀的開(kāi)發(fā)框架,上述的關(guān)聯(lián)方式也只是其中一種,更多方式可以查閱官方手冊(cè):ThinkPHP官方手冊(cè)。

相關(guān)推薦:最新的10個(gè)thinkphp視頻教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享