Search

検索したいワードを入力してください

2019年03月18日

Laravelのモデルの作成方法と命名規則の解説

Laravelではモデルを使ってデータベースへのアクセスを行います。Laravelでアプリケーション開発を行う際、モデルはほぼ確実に使用する機能といえます。本記事ではモデルの作成から簡易テスト(動作確認)の手順までをご紹介します。

Laravelのモデルとは

Laravelのモデルとは、MVCアーキテクチャの「M」にあたるModelを指しています。モデルの機能は、主にデータベースとの連携を行うことになります。

LaravelのModelクラスには、Eloquentと呼ばれるデータベースのデータを操作する実装を行う機能と、ビジネスロジックがあります。Laravelでは、基本的に1つのテーブルに1つのモデルが存在します。

Laravelのモデルの作成方法と命名規則についての解説

ここでは、Laravelを使ったプログラミングの基本ともいえるモデルの作成について、順を追ってご紹介します。Laravelのモデルはコード記述そのものは、難しいものではありませんが、命名規則には注意が必要です。

Laravelの命名規則については、少し英単語の知識が必要になる部分もあるので、英単語の基礎知識に自信がない人は、英語の辞書を用意しておくのもおすすめです。

Laravelでのモデルの作成方法

Laravelのモデルはartisanコマンドを使って作成します。

【基本構文】
php artisan make:model xxxx

基本構文の「xxxx」部分については、モデルの名称を書きます。モデルの名称は、テーブルの名称を継承することが一般的ですが、命名規則をきちんと理解して命名する必要があります。

モデルを削除したい場合は、オプションが用意されていないため、手動でファイルそのものを削除します。

環境設定の確認と変更

artisanコマンドを実行する前に、.envファイルの以下の値を確認し、必要に応じて設定変更します。

【.envファイル】
DB_HOST=host
DB_DATABASE=database
DB_USERNAME=username
DB_PASSWORD=password


データベースの設定は、「config/database.php」に記述されています。必要に応じて.envファイルに反映させましょう。

artisanコマンドで作成する

Laravelでモデルを作成する方法としては、以下のコマンドを実行するだけで完了します。以下のコマンドでは書籍テーブルを想定して「book」モデルを作成してみましょう。

【コード記述例】
php artisan make:model book

生成先を指定したい場合はモデル名の前にパスを指定

作成するモデルの生成先を明示したい場合は、モデル名の前に生成先のパスを指定します。パス指定をしない場合は、デフォルトでappディレクトリに生成されます。

【生成先を指定するコード記述例】
php artisan make:model Models\book

モデルの命名規則

Laravelのモデル生成は、コード記述は特に難しくなく、簡単な1文で完了します。しかし、その中で使用するモデル名などの命名規則には注意を払っておく必要があります。

ただし、この命名規則は絶対的なものではなく、モデルを紐づけるテーブル名を明示的に指定することもできます。

【オーバーライド例】
class book extends Model
{
protected $table = 'foreign_books';
}

テーブル名を単数形にしたものがモデル名

Laravelのモデルでは、テーブル名がbooksの場合、モデル名はbookとする必要があります。テーブル名は複数形の名称で、テーブル名の単数形となる単語がモデル名というのがLaravelの命名規則です。この命名規則によりModelの生成が行われます。

テーブル名やModel名を付ける際、「books」のように内容がわかるひとつの単語からなる名称とする場合と、「SpecialBooks」のように修飾する単語とひとまとめにした命名がされる場合があります。

Model名は単数形、テーブル名は複数形という決まりがあるため、命名の際はこれらの規則に沿えるように単語の組み合わせにも気を配りましょう。ただし、命名規則はあくまでも「推奨」で強制ではありません。

Model名テーブル名
php artisan make:model UserUserUsers
php artisan make:model personpersonpeople

Laravelにはmodelsディレクトリがない

Laravelにはmodelsディレクトリがデフォルトでは用意されていません。特に指定しない限り、単にartisanコマンドを実行しただけの場合は、appディレクトリ配下にモデルファイルが生成されます。

Laravelにmodelsディレクトリがデフォルトで設定されていないのは、開発者によって「models」という名前の定義が大きく異なることを考慮されたためといわれています。

modelsディレクトリを用意したい場合

開発者がmodelsディレクトリを用意したい場合は、一般的にはappディレクトリの下にmodelsディレクトリを手動で用意します。artisanコマンドを発行する際は、パス名も指定して実行することで、作成したmodelsディレクトリの下にモデルファイルを格納していけます。

appディレクトリの外に用意したい場合

appディレクトリ下にmodelsディレクトリを作るのではなく、全く別のパスに用意したい場合は、composer.jsonに作成したディレクトリのパスをオートロード設定します。

Laravelのモデルを使ってみる

Laravelで生成したModelの動作を確認してみましょう。Modelを動かしてみるためには、テーブルにデータを用意し、コントローラーを使ってModelを呼び出します。

用意したデータが想定通り出力されるか確認します。以下の手順でModelの確認をします。

①migrationファイルの作成・編集
②シーダーの作成・編集
③データ確認
④コントローラー作成
⑤Modelを呼び出し、データの出力確認

①migrationファイルの作成・編集

モデルの動作確認をするためにまずは「migrationファイル」を作成します。ここではbooksテーブルを例として作ります。

【コード記述例】
php artisan make:migration create_book_tables

このコードを実行するとmigrationファイルが生成されるので、ファイルの内容を以下のように編集します。

生成直後のmigrationファイル

自動生成されたmigrationファイルのコメント下に追加コードを記述します。

class CreateBookTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

migrationファイルへのコード記述例

自動生成されたコードのupにテーブルのカラムを定義します。downには、テーブル名を記述します。

【コード追記例】
public function up()
{
$table->increments('book_id');
$table->string('book_name');
$table->timestamps();
}


public function down()
{
Schema::drop('books');
}
}

②シーダーの作成・編集

初期データを用意するためシーダーを作成します。以下の例のコマンドを実行すると、コードが自動生成されます。


【コード記述例】
php artisan make:seed BookTableSeeder

【自動生成コード】
class BookTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}

シーダーファイルへのコード追記例

自動生成されたコードのコメント下に記述されているrunメソッドに、booksテーブルに関連する事項を追記します。

class BookTableSeeder extends Seeder
{
public function run()
{
$this->db->table('books')->insert([
'book_name' => 'TestBookName',
]);
}
}

DatabaseSeeder.phpの編集

作成したBookシーダーを実行できるようapp/database/seeds/DatabaseSeeder.phpの内容を編集します。runメソッドに、作成したシーダー(BookTableSeeder)の呼び出しを追記します。

【コード記述例】
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(BookTableSeeder::class);
}
}

③データ確認

migrationとシーダーを実行し、テーブルとデータがセットされたことを確認してみます。

【実行コマンド】
php artisan migrate
php artisan db:seed


テスト環境のMYSQLにログインし、booksテーブルにbook_nameが「TestBookName」のデータがセットされていることを確認しましょう。

④コントローラー作成

テーブルとデータの存在が確認できたら、Modelの動作確認の環境が整ったことになります。コントローラーでモデルを呼び出す確認を行うために、bookModel用のコントローラを作成します。

【コマンド実行例】
php artisan make:controller BookController

コード追記

自動生成されたコントローラーのコードに、indexメソッドを追記します。コード例の記述で、booksテーブルの一番最初のデータを取得し、出力させます。

【コード記述例】
class BookController extends Controller
{
public function index()
{
$book = Book::first(); // 最初のレコード取得
dd($book->book_name); // 出力
}
}

⑤Modelを呼び出しデータの出力確認

ルーティングの設定をルートファイルに記述し、ブラウザで指定のルートにアクセスしてみましょう。コントローラーのindexに追記した$book->book_nameの内容がデバッグ出力されていれば完了です。

エラーが出力された場合は、エラー内容に応じて、追記したコードの内容を見直して再実行しましょう。

LaravelのModelでデータ操作をしてみよう!

Lavelでデータベースのデータを操作するにはモデルを作成して、使用することで、簡単にデータベースにアクセスすることができます。まずは、テーブルにデータを登録して、モデルを使ってデータ操作ができることを確認しましょう。

Laravelを使ううえで、モデルの作成と利用は欠かせません。Laravel初心者であれば、基礎となるモデルの動作をサンプルで確認し、使いこなせるようにしておきましょう。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related