====== 14 Laravel Model ======
Modelとは、MVCアーキテクチャ(Model View Controller)の「M」にあたる部分で、主にデータベースとの連携を行います。
LaravelにおけるModelは、Eloquent(DBのデータを操作する実装)の機能とビジネスロジックを持ったクラスです。
基本的には1つのテーブルに1つのModelが存在します。
===== 1. Model作成 =====
この場合だと、testテーブルを作成するという意味です。
php artisan make:model Test
$ ll app/Test.php
-rw-r--r-- 1 matsui users 140 Jan 22 16:49 app/Test.php
==== Modelの中で、テーブル名を指定する場合 ====
class Test extends Model
{
protected $table = 'test_tables';
}
===== 2. Modelを使う =====
==== Migrateを用意(テーブル作成) ====
※make:migrationの決まりごと
小文字ならそのまま create_test_tables = test_tables
大文字ならスペースが入る createTestTables = test_tables
php artisan make:migration create_test_tables
=== 例: ===
$ php artisan make:migration create_test_tables
Created Migration: 2019_01_22_042833_create_test_tables
$ ll database/migrations/2019_01_22_042833_create_test_tables.php
-rw-r--r-- 1 matsui users 598 Jan 22 13:28 database/migrations/2019_01_22_042833_create_test_tables.php
==== Seedsを用意(初期データインサート) ====
php artisan make:seed TestTableSeeder
$ ll database/seeds/TestTableSeeder.php
-rw-r--r-- 1 matsui users 296 Jan 22 14:11 database/seeds/TestTableSeeder.php
public function run()
{
DB::table('test_tables')->insert([
'name' => 'default_user',
]);
public function run()
{
$this->call(TestTableSeeder::class);
}
==== MigrateとSeeds実行 ====
php artisan migrate
php artisan db:seed
db:seed を実行すると、database/seeds/DatabaseSeeder.phpが実行される。
Migrateと同時にSeedsも実行する場合
php artisan migrate --seed
=== ロールバック ===
最後の1個をロールバック
php artisan migrate:rollback --step=1
== 最後の1個だけ再度マイグレーションしたい場合 ==
下記から必要なマイグレーション以外移動させておいてから、再度マイグレーション実施
database/migrations/
=== マイグレーション状態確認 ===
$ php artisan migrate:status
+------+-----------------------------------------------------------------+-------+
| Ran? | Migration | Batch |
+------+-----------------------------------------------------------------+-------+
| Yes | 2014_10_12_000000_create_users_table | 1 |
| Yes | 2014_10_12_100000_create_password_resets_table | 1 |
| Yes | 2016_01_01_000000_add_voyager_user_fields | 1 |
| Yes | 2016_01_01_000000_create_data_types_table | 1 |
| Yes | 2016_01_01_000000_create_pages_table | 16 |
===== コントローラ作成 =====
$ php artisan make:controller TestController
$ ll app/Http/Controllers/TestController.php
-rw-r--r-- 1 matsui users 121 Jan 22 14:54 app/Http/Controllers/TestController.php
{{tag>laravel php}}