溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

join與orWhere怎么在php項(xiàng)目中使用

發(fā)布時(shí)間:2020-12-28 14:52:12 來(lái)源:億速云 閱讀:119 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

今天就跟大家聊聊有關(guān)join與orWhere怎么在php項(xiàng)目中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

Laravel是一個(gè)開(kāi)源PHP框架,功能強(qiáng)大且易于理解。它遵循模型 - 視圖 - 控制器設(shè)計(jì)模式(MVC)。Laravel重用了不同框架的現(xiàn)有組件,這有助于創(chuàng)建Web應(yīng)用程序。這樣設(shè)計(jì)的Web應(yīng)用程序更加結(jié)構(gòu)化和實(shí)用。

Laravel框架的主要特點(diǎn):

1.模塊化包裝

2.依賴管理器完全基于composer

3.精湛的自動(dòng)加載器

4.優(yōu)雅的ORM

5.查詢構(gòu)建器作為潛在的ORM替代

6.PostgreSQL,MySQL,SQL Server平臺(tái)支持您的數(shù)據(jù)庫(kù)

7.簡(jiǎn)化的葉片模板引擎

8.比以前更快的自動(dòng)化

9.內(nèi)置身份驗(yàn)證機(jī)制和緩存機(jī)制

10.一流的路由功能和選項(xiàng)

11.無(wú)與倫比的質(zhì)量會(huì)話控制

12.IO功能

13.Artisan命令-d或示例代碼行接口

注:Composer是一個(gè)包含所有依賴項(xiàng)和庫(kù)的工具。它允許用戶創(chuàng)建與所提到的框架相關(guān)的項(xiàng)目(例如,Laravel安裝中使用的項(xiàng)目)。借助Composer可以輕松安裝第三方庫(kù)。所有依賴項(xiàng)都在composer.json文件中記錄,該文件放在源文件夾中。

下面開(kāi)始今天的正文。

1. 前景題要:

在一個(gè)項(xiàng)目中,我遇到了需要聯(lián)表查詢的情況,同時(shí)聯(lián)表之后需要通過(guò)一個(gè)關(guān)鍵詞來(lái)篩選出對(duì)應(yīng)的數(shù)據(jù),就比如我這里需要對(duì)角色名字、用戶名稱、電話這幾個(gè)字段,通過(guò)傳入的一個(gè)keyword字段進(jìn)行篩選。

2. 問(wèn)題分析:

此時(shí)我需要把用戶表聯(lián)系上我們的訂單表,訂單表中有user_id的字段,從而可以得到訂單的用戶名稱,這里首先講一下join(聯(lián)表)的用法。
常用的有三種join()、leftJoin()、rightJoin(),分別是內(nèi)連接、左連接、右連接.

內(nèi)連接:在兩張表進(jìn)行連接查詢時(shí),只保留兩張表中完全匹配的結(jié)果集。即兩張表的交集。
左連接:在兩張表進(jìn)行連接查詢時(shí),會(huì)返回左表所有的行,即使在右表中沒(méi)有匹配的記錄。即左表中存在的數(shù)據(jù)對(duì)應(yīng)在右表中不存在,依舊會(huì)返回左表中的數(shù)據(jù)。
右連接:在兩張表進(jìn)行連接查詢時(shí),會(huì)返回右表所有的行,即使在左表中沒(méi)有匹配的記錄。與左連接恰好相反。

接著需要寫(xiě)查詢的條件語(yǔ)句,我們首先 第一步需要查詢有效的訂單,其次第二步才是根據(jù)傳入的keyword進(jìn)行篩選,此處在最開(kāi)始的情況下我是直接使用where和orWhere混合進(jìn)行查詢,但遇到了總是會(huì)有些查詢條件未被包含進(jìn)去,此處我查了相關(guān)資料才弄明白,我們此處可以將利用keyword篩選的查詢寫(xiě)成一個(gè)閉包,從而不與其他where語(yǔ)句產(chǎn)生相互的影響。

3. 解決方案:

注:orWhere如果不用閉包的形式寫(xiě)很容易寫(xiě)成分開(kāi)的查詢條件

$order_res = Order::leftJoin('user', 'order.user_id', '=', 'user.id')->select('order.*', 'user.title')//此處只是將有用的信息選擇在聯(lián)表中。
->where('state', '=', 1) //首先就是將有效的訂單篩選出來(lái)。
->where(function($query) use ($keyword){//再在此閉包中根據(jù)keyword關(guān)鍵詞來(lái)進(jìn)行篩選。
	$query->where('order.mobile', 'like', '%'.$keyword.'%')
		 ->orWhere('user.title', 'like', "%{$keyword}%")//此處用了兩個(gè)orWhere查詢,都是or的關(guān)系,會(huì)將三種條件任意一個(gè)滿足的數(shù)據(jù)篩選出來(lái)。
		 ->orWhere('order.character_title', 'like', "%{$keyword}%");
});

看完上述內(nèi)容,你們對(duì)join與orWhere怎么在php項(xiàng)目中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI