LoginSignup
9
8

More than 3 years have passed since last update.

LaravelのEloquentについてメモ(DB接続編)

Posted at

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
{
    //
}

テーブル名

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

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の接続情報を指定している。

database.php
'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

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

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8