laravel 5.4 Eloquent モデル

laravel 5.4 Eloquent モデル

 

確認環境:

laravel 5.4

Windows 10

XAMPP 5.6.30(php 5.6.30)

 

laravel 5.4 でEloquent モデルについてメモしておきます。

 

laravel 5.4 データベースの追加

laravel 5.4 データベースとViewの連携
で、データベースを作成したので、その続きで、Eloquent モデルと連携させていきます。

データベース名:laratest01db01

テーブル:

・migrations

・password_resets

・users

・tasks ← このテーブルをいじります。

テーブル tasks は4つのフィールドがあります。

・id
・body
・created_at ← 自動で生成される
・updated_at ← 自動で生成される

 

以下のコマンドを実行します。

php artisan make:model Task

Task Eloquent モデルがされます。

 

C:\xampp\htdocs\laraveltest01\app に

Task.php

が作成されていることを確認。

 

以下のコマンドを実行します。

php artisan tinker

>>> App\Task::all()

実行すると、前回までに作成した tasks テーブルの全ての内容が表示されます。

今回、「Task」モデルを作成したので、他の名前を明示的に指定しない限り、クラス名を複数形(スネークケースにしたもの)「Tasks」が、テーブル名として使用されます。

モデルのtableプロパティを定義し、カスタムテーブル名を指定することもできます。

参考資料:

公式ドキュメンテーション Laravel 5.3 Eloquent:利用の開始

>>> App\Task::where(‘id’, ‘>’, 2)->get();

を実行すると、前回までに作成した tasks テーブルのidが2より大きいレコードが表示されます。

>>> App\Task::pluck(‘body’);

を実行すると、前回までに作成した tasks テーブルのすべてのレコードのbodyフィールドのが表示されます。

 

C:\xampp\htdocs\laraveltest01\routes の web.php を編集します。

web.php


http://localhost/laraveltest01/public/tasks

にアクセスして、Task モデルが表示されていることを確認します。

http://localhost/laraveltest01/public/tasks/[id値]

にアクセスして、選択した id値のbody フィールドの値が表示されていることを確認します。

 

ここで、テーブルに1つフィールドを追加したいので、

テーブルとモデルを削除して、再度作り直します。

php artisan migrate:reset

その後、

C:\xampp\htdocs\laraveltest01\database\migrations の

yyyy_mm_dd_xxxxxx_create_tasks_table.php

C:\xampp\htdocs\laraveltest01\app に

Task.php

を削除し、

composer dump-autoload

して、

php artisan make:model Task -m を実行します。

 

C:\xampp\htdocs\laraveltest01\database\migrations に

yyyy_mm_dd_xxxxxx_create_tasks_table.php

C:\xampp\htdocs\laraveltest01\app に

Task.php

が再度、生成されていることを確認します。

 

C:\xampp\htdocs\laraveltest01\database\migrations の

yyyy_mm_dd_xxxxxx_create_tasks_table.php

を開き、フィールドを1つ追加します。

 

追加したら、データベースをmigrateします。

php artisan migrate

なお、この時、テーブルが存在していると怒られるので、phpMyAdminで tasks テーブルを削除しておきます。

(php artisan migrate:refresh でもいいかも?)

 

tinkerを起動し、以下のコマンドを実行します。

php artisan tinker

>>> $tast = new App\Task;

>>> $tast->body = ‘xxxx’;

>>>$tast->completed = false;

>>> $tast->save(); ← ここでエラーになる場合は、phpMyAdminで手動でテーブルを追加する

 

http://localhost/laraveltest01/public/tasks

にアクセスして、Task モデルが表示されていることを確認します。

 

C:\xampp\htdocs\laraveltest01\app \Task.php を編集します

Task.php


tinkerを起動し、以下のコマンドを実行し動作確認します。

php artisan tinker

>> App\Task::incomplete()->get();

completed フィールドが0のレコードのみが表示されることを確認します。

 

参考資料:

LARACASTS Laravel 5.4 From Scratch(英語の動画)
公式ドキュメンテーション Eloquent:はじめに(英語)
公式ドキュメンテーション Eloquent:Relationships(英語)
公式ドキュメンテーション Eloquent: Collections(英語)
公式ドキュメンテーション Laravel 5.3 Eloquent:利用の開始

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>