【Laravel】Eloquentの備忘録チートシート

目次

Eloquent ORMとは

LaravelにおけるDBの操作をSQL文じゃなく、PHPのオブジェクト感覚で操作できる。

ORMはデータベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法です。

Eloquentチートシート

これ以降、

  • モデル=Chatmsg
  • Chatmsgと連動してるテーブルはreply_messages

Chatmsg::all();<全データを取得>

Chatmsgのテーブルに登録されている全てのデータを取得

Chatmsg::all();

//output
[{"id":1,"msg":"\u304a\u306f\u3088\u3046\uff01","created_at":null,"updated_at":null},
{"id":2,"msg":"\u3063\u3061","created_at":"2019-08-11 00:42:30","updated_at":"2019-08-11 00:42:30"},
{"id":3,"msg":"\u3063\u3061","created_at":"2019-08-11 00:43:25","updated_at":"2019-08-11 00:43:25"},
{"id":4,"msg":"\u3063\u3061","created_at":"2019-08-11 00:43:42","updated_at":"2019-08-11 00:43:42"}]

Chatmsg::find();<特定のidの値を取得>

指定したidのデータを取得する

$chats = Chatmsg::find(1);

//output
{"id":1,"msg":"\u304a\u306f\u3088\u3046\uff01","created_at":null,"updated_at":null}

文字化けするので、文字化け解消するミドルウェアを挟んであげるといい感じになる。

Chatmsg::find()->key;<特定のkeyの値を取得>

$chats = Chatmsg::find(1)->msg;

//output
おはよう!

migration file

Schema::create('テーブル名', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('msg'); <-ここ
            $table->timestamps();
        });

count(Chatmsg::all());<データの数を調べたい(レコード数)>

count(Chatmsg::all()); 

//output (50のレコードが存在している)
50

モデルのインスタンス生成

基本的にDBに登録する際に使用する。

下記の場合は、各属性を指定してDBに保存している。

$requestはPost送信で送られたデータ(keyにmsgと指定したvalueを取得)

public function store(Request $request){
     $chatmsg = new Chatmsg;
     $chatmsg->msg = $request->msg;
     :
     $chatmsg->save()
}