社畜系WEBエンジニアの消耗戦

社畜系WEBエンジニアの消耗戦

修羅の国でせっせと働く社畜系WEBエンジニアのブログ

Laravel5.3のチュートリアルがまだないから5.2でチュートリアルしてみる。その2、Eloquent編

元気に前回の続きを作っていきます。これ一通り終わったらドキュメント読みながらソーシャル要素のあるサイトでも作ってお金儲けウハウハしようと思っています。

3桁万円稼げたら僕は独立します( ー`дー´)キリッ←現実味ない

参考サイト

基本のタスクリスト 5.2 Laravel

5.3はまだないけど、5.2なら日本語で入門できるみたいなので、こちらを使っていきます。まだ英語のドキュメントは抵抗あるお年頃です。

Eloquentとは

まずは読み方ですよね。

素直に発音すれば、「エロクエント」?になるんでしょうか。響きは好きですよ、エロクエント。エロクエント!エロクエント!エロクエント!

さてそんなEloquentは何者ぞって話ですが、LaravelのORM実装のようです。まぁモデルちゃんって思ってて差し支えない気がします。多分。おそらく。Maybe。

$ php artisan make:model Task
Model created successfully.

すっからかんのモデルができた。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    //
}

Railsよろしく、設定より規約、で、前回作ったtasksテーブルにマッピングされます。

make:modelコマンドの詳細

はい、恒例のコマンド詳細のコーナーです。今回も-hオプションで先ほど叩いたコマンドを裸にしていきます。

$ php artisan make:model -h
Usage:
  make:model [options] [--] <name>

Arguments:
  name                  The name of the class

Options:
  -m, --migration       Create a new migration file for the model.
  -c, --controller      Create a new controller for the model.
  -r, --resource        Indicates if the generated controller should be a resource controller
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Create a new Eloquent model class

ほう、一緒にマイグレーション作ったり、コントローラー作ったりもできるとな。いや便利。便利?職人がこれを使ってるかどうかって気になりますね。僕は今のところ使う予定はなさそうです。

Eloquentについてもう少し細かく見ていく

このままチュートリアルを先に進めてもいいんですが、気になったところは先に調べておいたほうがいいはずなので、先にEloquentについて見ていきます。

Eloquent:利用の開始 5.2 Laravel

モデル定義

  • composer.jsonでオートロードを指定すればどこにでも配置可能
  • Illuminate\Database\Eloquent\Modelを継承する必要がある

テーブル名

  • クラス名を複数形のsnake_caseにしたものがテーブル名
  • ただし、tableプロパティで明示的に指定できる

主キー

  • idがデフォルトで設定されている
    • idはオートインクリメントである想定
  • 自動的にintにキャストされる
  • オートインクリメントではない、もしくはint以外の主キーの場合、$incrementingfasleに設定すること

タイムスタンプ

  • created_atupdated_atは自動更新される
  • 自動更新したくない場合は、$timestampsfalseにすること
  • タイムスタンプのフォーマットを変更する場合は、$dateFormatで設定可能

データベース接続

  • $connectionプロパティで明示的に接続先のDBを設定可能

うん、とりあえずさわりの部分だけ見てみたけど、これまで使ったことのあるCakePHPとかRailsとかと比べて特段変わった部分は何も無いようです。

おわりに

エロクエント!

ホントは先に知っておくべきであろうメソッドとかたくさんあるんですが、もうなんかめんどくさくなってきたので、Eloquent自体の勉強は一旦ここできってチュートリアルを先に進めていこうかなと思いやす。

楽しくなってきた。