久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>知識>laravel怎么自定義日志(3分鐘短文Laravel)

laravel怎么自定義日志(3分鐘短文Laravel)

發布時間:2024-01-23閱讀(9)

導讀引言今天說一個細分的需求,在模型中,或者使用laravel提供的EloquentORM功能,構造查詢語句時,返回位于兩個指定的日期之間的條目。應該怎么寫?本....引言

今天說一個細分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,構造查詢語句時,返回位于兩個指定的日期之間的條目。應該怎么寫?

laravel怎么自定義日志(3分鐘短文Laravel)(1)

本文通過幾個例子,為大家梳理一下。

學習時間

假設有一個模型 Reservation,我們查詢某個日期的預訂條目數,首先構造日期字符串,使用內置函數:

$now = date(Y-m-d);

返回當前日期。然后調用模型的 where 查詢語句:

$reservations = Reservation::where(reservation_from, $now)->get();

上一條生成的SQL語句如下:

SELECT * from table_name where reservation_from = $now

只會返回日期比較相等的條目。如何實現在 from 和 to 之間的日期呢,類似下面這樣:

SELECT * FROM table_name WHERE reservation_from BETWEEN $from AND $to

在laravel中你可以使用 whereBETWEEN 這個查詢子句。首先構造起始和結束日期:

$from = date(2020-01-01);$to = date(2020-08-09);

然后調用查詢子句:

Reservation::whereBetween(reservation_from, [$from, $to])->get();

這樣就返回SQL查詢的 BETWEEN ... AND .... 語句了。

當然了,上面的方法是在SQL中直接進行篩選,如果查詢結果限制的條目本身比較少,也能充分利用索引,所以不擔心查詢的速度,那么我們可以在查詢完成后,在返回的 Eloquent Collection 集合上,鏈式調用過濾 filter 方法進行篩選。

那么代碼實現起來像下面這樣:

laravel怎么自定義日志(3分鐘短文Laravel)(2)

注意程序寫起來很柔順,使用 Carbon 提供的 between 方法進行判斷。程序上下文很好理解。

如果考慮初始查詢條件圈定的記錄條目過多,會對MySQL造成流量的壓力,那么在SQL階段直接篩選出最精準的記錄,無疑是個好習慣。whereBetween 在模型里鏈式調用毫無壓力:

laravel怎么自定義日志(3分鐘短文Laravel)(3)

如果你覺得框架自帶的where子句不足以滿足你的查詢需求,那么直接用原生查詢條件好了,用 whereRaw 就可以了,像下面的例子,先構造查詢區間:

$fromDate = "2020-02-01";$toDate = "2016-06-30";

然后使用參數綁定:

$reservations = Reservation::whereRaw("(reservation_from >= ? AND reservation_from <= ?)", [$fromDate." 00:00:00", $toDate." 23:59:59"])->get();

別的辦法

假如上面的寫法你覺得不夠直觀,或者很難把握,那就跟著直覺走。判斷日期之間,無非就是大于某個日期,且小于某個日期這樣。那直接用大小比較就行了。

其實between這個關鍵字,在MySQL中也不過是大小比較的縮寫語法糖。那么就可以把程序寫成下面這樣:

$reservations = Reservation::where(reservation_from, >=, $from) ->where(reservation_from, <=, $to) ->get();

寫在最后

本文通過3種寫法實現了對于日期之間的SQL查詢,我們建議使用SQL語句的限制,將篩選的結果精準返回,然后做進一步操作。laravel雖然提供了集合操作,但是在數據庫側效率并不高,所以不提倡全量查詢,集合篩選這樣的操作。

Happy coding :-)

我是 @程序員小助手 ,持續分享編程知識,歡迎關注。

,
TAGS標簽:  laravel  怎么  自定義  日志  3分鐘  laravel怎么自

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖