更新於 2022/06/16閱讀時間約 4 分鐘

Laravel MongoDB CRUD

假設資料如下:
  • local DB裡面的test Collection

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

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

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

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.