php – Laravel MongoDB 的 distinct 的 count() 用法

原因

官方提供的 distinct() 會在 php 取得所有列表。

當要計算數量如果使用 count() 那會把資料全部撈到 php 然後加總,這會非常吃 php-fpm 所使用的記憶體。

改用聚合

count() 這件事情在取出資料庫之前就完成,由資料庫回傳一個數值是最好的辦法。但現階段必須透過 laravel mongodb 的聚合寫法,以下範例示範:

1. 建立範例數據

image

2. 使用聚合做到 distinct

假設我要知道 test_orders 裡面總共出現幾個 name,那可以透過聚合的 pipeline 實現。先寫結論

image

這樣就達到我們要的目標 3 筆。

3. 肢解上述

上述 aggregate() 用了兩次處理,我們分開來看數據。第一次先算出各筆 name 的重複次數

image

看到這裡就知道這份數據,有 3 種 name。因此可以這麼寫

image

php – match 與 enum 用法

Match 用法

先了解 match (8.0 支援) 的應用,後面可以搭配 enum。match 與 switch 用法類似,用於多個項目比較

進階一點的可以是

Enum

Enum (8.1 支援) ,可以配合 match 做到這樣的轉換

Linux – 修改 termainal 使用者 root 的 command 版面色彩

最近在 docker (laradock) 切進去 linux 的時候,預設是 root,呈現出來的視窗是黑白,沒有上色

要讓 terminal 的 command 可以呈現繽紛色彩我使用以下方法

接著我們執行

以上存擋後,下指令

就會有色彩出現了

php – phpStorm 設定 debug

以 xdebug 為例,如果是在 windows ,例如使用 XAMPP 套件,可以參考官方網站這麼設定。

修改 php.ini 啟動 Xdebug

前往 Settings (Ctrl + Alt + S) > Languages & Frameworks > PHP 打開 php.ini

如果有以下,請把 Zend Debugger 和 Zend Optimizer 隱藏,也就是在前方加分號

我們要啟動 Xdebug 所以在 php.ini 底部添加 Xdebug 章節,例如

儲存並關閉設定,我們可以查看 xdebug 是否啟動

寫入一支 php 查看是否已經出現 xdebug 安裝的資訊

在 phpStorm 設定

參考官方文章,Settings (Ctrl + Alt + S) > Languages & Frameworks > PHP

如果 Xdebug 有正確安裝的話會看到以下版本正確的顯示。如果沒有正確安裝,會顯示 Debugger: Not installed

接著設定 port ,也就是我們在 php.ini 寫入的 xdebug.remote_port=9911

儲存設定後關閉。接著我們使用 Chrome 來瀏覽 PHP 專案,所以我們要安裝瀏覽器輔助套件 xdebug-helper 。其他瀏覽器可參考官網的列表

安裝完成以後,我們寫段 Script

接著設定斷點,準備觀察

點選右上角視窗電話符號,或是選單 Run > Start Listening for PHP Debug Connections 準備監聽

打開 Chrome 啟動套件 Debug

接著運行網頁,phpStorm 就會自動出現除錯模式,點擊不同按紐,可以直接查看變數

例如

不斷點擊按紐,可以看到斷點呈現的變數資訊,到結束時,若 PHP 有輸出指令,可以在 output 檢視結果。

Ububtu 安裝 Xdebug

安裝好後會看到這樣的訊息,要你前往添加 php.ini 的參數 zend_extension

當然也可以查詢 extension 安裝在哪個目錄

接著依照指示修改 php.ini,記得兩處都要

如果已經有 zend_extension 參數,記得註解掉,我們改用以下

HTML – 使用正規表示式驗證

使用標籤 input 的時候,配合屬性 pattern 可以透過正規表示法來驗證,以下例子是限制密碼最少輸入8-12位英文與數字

See the Pen PoYmNQB by 檀熤斮 (@sbgjbjaa) on CodePen.