Laravel MongoDB CRUD

更新於 2022/06/16閱讀時間約 4 分鐘
假設資料如下:
  • local DB裡面的test Collection

SELECT

SELECT可以這樣寫:
DB::connection('mongodb')->collection('test')->get();
  • 由於config/database.php中設定的default DB_CONNECTION是mysql,所以這邊特別指定使用mongodb connection。
回傳結果如下:
ge

事實上,上述的SELECT也可以改成用Model的方式去寫:

namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model;
class Test extends Model
{
  protected $connection = 'mongodb';
  protected $collection = 'test';
}
SELECT直接這樣用,結果跟上述回傳是一樣的:
use App\Models\Test;
Test::get();

INSERT

用法跟insert mysql一樣,由於沒有disabled timestamp,也會順便塞updated_at, created_at欄位。
$test = new Test;
$test->name = 'ABC';
$test->nickname = 'Vic';
$test->save();
在Model將$timestamps disabled,則不會塞updated_at, created_at欄位。

另一種方式,可以用create method:
  • $guarded = [] 設定所有欄位fillable。
 Test::create([
  'name' => 'ABC',
  'nickname' => 'Vic'
]);

UPDATE

比如update這筆document:
Test::where('_id', '62aadfec8d55483add05ff95')
->update([
  'name' => 'DEF',
  'email' => 'abc123@gmail.com'
]);
更新結果如下:

DELETE

將這筆document刪除:
Test::where('_id', '62aadfec8d55483add05ff95')->delete();

軟刪除

use Jenssegers\Mongodb\Eloquent\SoftDeletes;
use SoftDeletes;
Test::where('_id', '62aadf078d55483add05ff94')->delete();

不難發現,其實在Laravel中對MongoDB做CRUD,寫法上跟MySQL CRUD是一樣的,所以只要有使用過MySQL,有基本CRUD觀念,就能很快上手。

本筆記參考:
  1. https://kb.objectrocket.com/mongo-db/how-to-insert-mongodb-document-using-laravel-1079
  2. https://stackoverflow.com/questions/29712231/update-mongodb-with-laravel-5-jenssegers
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
21會員
161內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
欲在Laravel中使用MongoDB,首先要確認有安裝MongoDB PHP driver,接著再安裝Laravel MongoDB套件,才能開始使用CRUD。 1. 安裝MongoDB PHP driver (1) 到這邊下載MongoDB PHP driver (3) 檢查是否正常 後記:
MongoDB 簡介 MongoDB是一種開源的NoSQL文件資料庫(Document Database),MongoDB中可以有多個Database,每個Database中可以有多個Collection,每個Collection中可以有多個Document。 Windows 安裝 MongoDB
在Laravel中想達到websocket效果,由後端主動傳訊給前端,需使用broadcasting 將event廣播出去,由前端來接收訊息。 因此在業界常看到使用Redis + socket.io的架構,也是本篇選擇的機制。 從伺服器廣播訊息到前端接收的流程,大概會是這樣: 安裝與設定Redis
比如訂單出貨的時候,觸發一個訂單出貨事件,發送出貨email通知給user。 需先註冊event與listener,在EventServiceProvider的$listen中定義: 產生event與listener: 下指令可以方便產生事件與監聽器檔案: 產生的事件與監聽器如下: 事件訂閱者
假設有一張表,儲存一個iPhone商品跟剩餘庫存量。 如果商品庫存剩1個,明明是A先買到,這時候就已經沒庫存了,可是系統卻告訴B恭喜你搶到了,這種情況就更糟糕了,只剩下一支iPhone,卻跟兩個人(甚至更多人)都說有買到,也就是發生所謂的超賣問題。 悲觀鎖 Pessimistic Lock
Swoole是一個使用C語言寫出來的PHP extension,本篇筆記了如何使用Laravel+Swoole來打造websocket應用,包含從伺服器安裝到基本範例程式,有websocket基本觀念後,再花點時間,就能把程式改成多人聊天室或私頻聊天等應用了。 Requirement 安裝PHP:
欲在Laravel中使用MongoDB,首先要確認有安裝MongoDB PHP driver,接著再安裝Laravel MongoDB套件,才能開始使用CRUD。 1. 安裝MongoDB PHP driver (1) 到這邊下載MongoDB PHP driver (3) 檢查是否正常 後記:
MongoDB 簡介 MongoDB是一種開源的NoSQL文件資料庫(Document Database),MongoDB中可以有多個Database,每個Database中可以有多個Collection,每個Collection中可以有多個Document。 Windows 安裝 MongoDB
在Laravel中想達到websocket效果,由後端主動傳訊給前端,需使用broadcasting 將event廣播出去,由前端來接收訊息。 因此在業界常看到使用Redis + socket.io的架構,也是本篇選擇的機制。 從伺服器廣播訊息到前端接收的流程,大概會是這樣: 安裝與設定Redis
比如訂單出貨的時候,觸發一個訂單出貨事件,發送出貨email通知給user。 需先註冊event與listener,在EventServiceProvider的$listen中定義: 產生event與listener: 下指令可以方便產生事件與監聽器檔案: 產生的事件與監聽器如下: 事件訂閱者
假設有一張表,儲存一個iPhone商品跟剩餘庫存量。 如果商品庫存剩1個,明明是A先買到,這時候就已經沒庫存了,可是系統卻告訴B恭喜你搶到了,這種情況就更糟糕了,只剩下一支iPhone,卻跟兩個人(甚至更多人)都說有買到,也就是發生所謂的超賣問題。 悲觀鎖 Pessimistic Lock
Swoole是一個使用C語言寫出來的PHP extension,本篇筆記了如何使用Laravel+Swoole來打造websocket應用,包含從伺服器安裝到基本範例程式,有websocket基本觀念後,再花點時間,就能把程式改成多人聊天室或私頻聊天等應用了。 Requirement 安裝PHP:
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。
Thumbnail
在使用laravel中的Queue job的時候 如果希望job中斷還可以重新啟動這個時候就會需要用到Supervisor了 本篇文章為您帶來如何使用Supervisor執行Laravel的queue:work的教學
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
MongoDB 在排序時會將資料全部載入記憶體,之後在記憶體中進行排序,而預設開放給排序的記憶體只有 32 MB,因此在大量資料排序時就會引發該錯誤。
Thumbnail
MongoDB是什麼? MongoDB 是一個用於存儲和管理資料的開放源碼資料庫系統。它使用一種稱為文檔導向的數據模型,允許使用者以簡單、結構化的方式存儲數據,並提供了許多強大的查詢功能。MongoDB 被設計用於支援大量數據和高交易量的情況,因此非常適用於大型企業的數據管理需求。 為什麼Mongo
Thumbnail
以下從社群整理並加上我的一些想法和意見。我的看法偏空,我們先從比較簡單的空方質疑開始,再來看多方的“解釋“。投資任何一家公司,都應該試著正反去看,才能真正搞清自己的感覺,而不是單方面只看到想看的東西。別忘了,我們上個禮拜說了,別跟公司談戀愛。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。
Thumbnail
在使用laravel中的Queue job的時候 如果希望job中斷還可以重新啟動這個時候就會需要用到Supervisor了 本篇文章為您帶來如何使用Supervisor執行Laravel的queue:work的教學
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
MongoDB 在排序時會將資料全部載入記憶體,之後在記憶體中進行排序,而預設開放給排序的記憶體只有 32 MB,因此在大量資料排序時就會引發該錯誤。
Thumbnail
MongoDB是什麼? MongoDB 是一個用於存儲和管理資料的開放源碼資料庫系統。它使用一種稱為文檔導向的數據模型,允許使用者以簡單、結構化的方式存儲數據,並提供了許多強大的查詢功能。MongoDB 被設計用於支援大量數據和高交易量的情況,因此非常適用於大型企業的數據管理需求。 為什麼Mongo
Thumbnail
以下從社群整理並加上我的一些想法和意見。我的看法偏空,我們先從比較簡單的空方質疑開始,再來看多方的“解釋“。投資任何一家公司,都應該試著正反去看,才能真正搞清自己的感覺,而不是單方面只看到想看的東西。別忘了,我們上個禮拜說了,別跟公司談戀愛。