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');
とりあえず準備完了。