Laravelの経験が少ないので、公式を見ながら少しずつメモ。

Eloquent ORMとは?

LaravelのDB操作のこと。CRUD。

DBの接続情報の設定

下記ファイルに設定

config/database.php

モデルファイル

モデルファイルはappディレクトリ配下に設置。
composer.jsonファイルにオートロードするように指定した場合は、どこでも設置可能。

全てのEloquentモデルは、Illuminate\Database\Eloquent\Modelを拡張する必要あり。

Artisanコマンドでモデル生成

下記コマンドで生成

php artisan make:model User

app/user.phpが生成される。


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}

テーブル名

生成したモデルにどのテーブルを使用するか。
テーブル名を指定しない場合は、<font color="Red">クラス名を複数形のスネークケースにしたものが、自動的にテーブル名とされる。</font>

Userモデル → userテーブル

テーブル名を指定するときは、tableプロパティを定義する。


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //テーブル名指定
    protected $table = 'test_user';
}

タイムスタンプ

EloquentはDBのcreated_atとupdated_atを自動更新してくれる。
自動更新してほしくないときは、timestampsプロパティをfalseにする。


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //タイムスタンプを自動更新しないように設定
    public $timestamps = false;
}

タイムスタンプを保存するカラム名もカスタム可能。


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
}

別のDBに切り替え

EloquentモデルはDBを指定しない場合は、デフォルトに設定されているデータベースに接続する。
データベースを指定したい場合は、connectionプロパティを使用する。


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //コネクション名を指定
    protected $connection = 'mysql2';
}

データベースの接続情報は、
config/database.phpに記載する。
defaultキーでデフォルトDBの接続情報を指定している。

'default' => 'mysql',

'connections' => [
    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST_ONE', 'localhost'),
        'database'  => env('DB_DATABASE_ONE', 'forge'),
        'username'  => env('DB_USERNAME_ONE', 'forge'),
        'password'  => env('DB_PASSWORD_ONE', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
    'mysql2' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST_TWO', 'localhost'),
        'database'  => env('DB_DATABASE_TWO', 'forge'),
        'username'  => env('DB_USERNAME_TWO', 'forge'),
        'password'  => env('DB_PASSWORD_TWO', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
   ],
],

公式
https://readouble.com/laravel/5.8/ja/eloquent.html#introduction

実際にまとめてみると、理解が深まる。