広告

PHPフレームワークLaravel5.6でCRUD~準備編

CRUD(クラッド)は
C:Create
R:Read
U:Update
D:Delete
の頭文字を並べた用語。
WEBシステム開発の基本機能だからLaravel5.6でどう実現するか簡単なケースを例に順を追って試してみる。

マイグレーション使ってtestテーブル作成

以下のようなtextテーブルを想定。

CREATE TABLE `test` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `category` TINYINT(4) NOT NULL,
  `description` TEXT NOT NULL,
  `created_at` TIMESTAMP,
  `updated_at` TIMESTAMP,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

// マイグレーションファイルを作ろう
※名称はcreate_[テーブル名]_tableな感じみたいね。

$ php artisan make:migration create_test_table

database/migrations/2018_08_08_162121_create_test_table.phpが生成された。

// 生成されたファイルを編集
database/migrations/2018_08_08_162121_create_test_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTestTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('test');
    }
}

以下のようにup()メソッドを修正

    public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->tinyinteger('category');
            $table->text('description');
            $table->timestamps();
        });
    }

※$table->timestamps()でcreated_atとupdated_atが作成されるらしい。

// マイグレーション実行

$ php artisan migrate
Migrating: 2018_08_08_162121_create_test_table
Migrated:  2018_08_08_162121_create_test_table

以上でtestテーブルが作成されたよ。

モデルを作ろう:Testモデル

app/Models/Test.php

$ php artisan make:model Models/Test

コントローラー:TestController作成

$ php artisan make:controller TestController

・要認証機能を追加
・とりあえずindexメソッドと追加

app/Http/Controllers/TestController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    // 要認証機能
    public function __construct()
    {
        $this->middleware('auth');
    }
    // indexメソッド
    public function index()
    {
        return view('test/index');
    }
}

ルーティング設定(Resourceful)

routes/web.php

Route::resource('test', 'TestController');

とりあえず準備完了。