php的lavarel框架中join和orWhere的用法
Laravel是一個(gè)開源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ù)庫
7.簡化的葉片模板引擎
8.比以前更快的自動(dòng)化
9.內(nèi)置身份驗(yàn)證機(jī)制和緩存機(jī)制
10.一流的路由功能和選項(xiàng)
11.無與倫比的質(zhì)量會(huì)話控制
12.IO功能
13.Artisan命令-d或示例代碼行接口
注:Composer是一個(gè)包含所有依賴項(xiàng)和庫的工具。它允許用戶創(chuàng)建與所提到的框架相關(guān)的項(xiàng)目(例如,Laravel安裝中使用的項(xiàng)目)。借助Composer可以輕松安裝第三方庫。所有依賴項(xiàng)都在composer.json文件中記錄,該文件放在源文件夾中。
下面開始今天的正文。
1. 前景題要:
在一個(gè)項(xiàng)目中,我遇到了需要聯(lián)表查詢的情況,同時(shí)聯(lián)表之后需要通過一個(gè)關(guān)鍵詞來篩選出對(duì)應(yīng)的數(shù)據(jù),就比如我這里需要對(duì)角色名字、用戶名稱、電話這幾個(gè)字段,通過傳入的一個(gè)keyword字段進(jìn)行篩選。
2. 問題分析:
此時(shí)我需要把用戶表聯(lián)系上我們的訂單表,訂單表中有user_id的字段,從而可以得到訂單的用戶名稱,這里首先講一下join(聯(lián)表)的用法。
常用的有三種join()、leftJoin()、rightJoin(),分別是內(nèi)連接、左連接、右連接.
內(nèi)連接:在兩張表進(jìn)行連接查詢時(shí),只保留兩張表中完全匹配的結(jié)果集。即兩張表的交集。
左連接:在兩張表進(jìn)行連接查詢時(shí),會(huì)返回左表所有的行,即使在右表中沒有匹配的記錄。即左表中存在的數(shù)據(jù)對(duì)應(yīng)在右表中不存在,依舊會(huì)返回左表中的數(shù)據(jù)。
右連接:在兩張表進(jìn)行連接查詢時(shí),會(huì)返回右表所有的行,即使在左表中沒有匹配的記錄。與左連接恰好相反。
接著需要寫查詢的條件語句,我們首先 第一步需要查詢有效的訂單,其次第二步才是根據(jù)傳入的keyword進(jìn)行篩選,此處在最開始的情況下我是直接使用where和orWhere混合進(jìn)行查詢,但遇到了總是會(huì)有些查詢條件未被包含進(jìn)去,此處我查了相關(guān)資料才弄明白,我們此處可以將利用keyword篩選的查詢寫成一個(gè)閉包,從而不與其他where語句產(chǎn)生相互的影響。
3. 解決方案:
注:orWhere如果不用閉包的形式寫很容易寫成分開的查詢條件
$order_res = Order::leftJoin('user', 'order.user_id', '=', 'user.id')->select('order.*', 'user.title')//此處只是將有用的信息選擇在聯(lián)表中。
->where('state', '=', 1) //首先就是將有效的訂單篩選出來。
->where(function($query) use ($keyword){//再在此閉包中根據(jù)keyword關(guān)鍵詞來進(jìn)行篩選。
$query->where('order.mobile', 'like', '%'.$keyword.'%')
->orWhere('user.title', 'like', "%{$keyword}%")//此處用了兩個(gè)orWhere查詢,都是or的關(guān)系,會(huì)將三種條件任意一個(gè)滿足的數(shù)據(jù)篩選出來。
->orWhere('order.character_title', 'like', "%{$keyword}%");
});
到此這篇關(guān)于php的lavarel框架中join和orWhere的用法的文章就介紹到這了,更多相關(guān)php lavarel框架join和orWhere的用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Yii框架中用response保存cookie,用request讀取cookie的原理解析
這篇文章主要介紹了Yii框架中用response保存cookie,用request讀取cookie的原理,結(jié)合實(shí)例形式分析了Request.Cookies與Response.Cookies的區(qū)別及相關(guān)使用技巧,需要的朋友可以參考下2019-09-09
又一個(gè)PHP實(shí)現(xiàn)的冒泡排序算法分享
這篇文章主要介紹了又一個(gè)PHP實(shí)現(xiàn)的冒泡排序算法分享,標(biāo)題中的又一個(gè)是指本站已經(jīng)有好幾篇冒泡排序算法的文章了,如果這個(gè)沒有滿足你的要求,請看相關(guān)文章里的其他實(shí)現(xiàn)方法吧,需要的朋友可以參考下2014-08-08
微信開發(fā)之網(wǎng)頁授權(quán)獲取用戶信息(二)
本文給大家闡述的微信開發(fā)基于yii2.0框架,對(duì)微信開發(fā)之網(wǎng)頁授權(quán)獲取用戶信息相關(guān)知識(shí)感興趣的朋友通過本文學(xué)習(xí)吧2016-01-01
PHP 進(jìn)程池與輪詢調(diào)度算法實(shí)現(xiàn)多任務(wù)的示例代碼
這篇文章主要介紹了PHP 進(jìn)程池與輪詢調(diào)度算法實(shí)現(xiàn)多任務(wù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
php實(shí)現(xiàn)姓名根據(jù)首字母排序的類與方法(實(shí)例代碼)
這篇文章主要介紹了php實(shí)現(xiàn)姓名根據(jù)首字母排序的類與方法,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
Laravel實(shí)現(xiàn)搜索的時(shí)候分頁并攜帶參數(shù)
今天小編就為大家分享一篇Laravel實(shí)現(xiàn)搜索的時(shí)候分頁并攜帶參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
PHP safe_mode開啟對(duì)于PHP系統(tǒng)函數(shù)有什么影響
這篇文章主要介紹了PHP safe_mode開啟對(duì)于PHP系統(tǒng)函數(shù)有什么影響,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

