LaravelでCRUD処理

MAMPでLaravelのCRUD処理を試す。

環境
MacOS High Sierra
Laravel 5.5

Laravelの勉強のために簡単なToDoアプリを作ってみた。
まずはプロジェクトの作成。
composer create-project --prefer-dist laravel/laravel todo

ブラウザでLaravel画面が開くかを確認。
http://localhost:8888/todo/public/

次にDBの設定、MAMPのphpMyAdminからToDoデータベースを作る。
CREATE DATABASE db_todo;

Laravelの.envファイルにデータベースの設定する。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_todo
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

ついでにタイムゾーンや言語の設定をしておく。
config/app.php

‘timezone’ => ‘Asia/tokyo’,
‘locale’ => ‘ja’,

Migrationでtasksテーブルを作る。
php artisan make:migration create_tasks_table --create=tasks

database/migrationsフォルダに作成日時_create_tasks_table.phpができる。
デフォルトでuserとpasswordの2ファイルがすでにあるので削除しておく。

create_tasks_table.phpにtaskカラムを追加する。
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->string('task');
$table->timestamps();
});
}

テーブルを作成するためにmigrateコマンドを実行。
php artisan migrate

phpMyAdminでテーブルができていることを確認する。

シーダーでテストデータを作成する。
database/seeds/TasksTableSeeder.php

DB::table('tasks')->insert([
[
'task' => 'sample',
'created_at' => '2018-01-21 21:10:59',
'updated_at' => '2018-01-21 21:10:59',
],
[
'task' => 'task',
'created_at' => '2018-01-21 21:00:01',
'updated_at' => '2018-01-21 21:00:01',
],
]);
}
}

DatabaseSeeder.phpのrunメソッドに追加。
$this->call('TasksTableSeeder');

コマンドを実行。
php artisan optimize
php artisan db:seed

Class TasksTableSeeder does not existとエラーになる場合はクラスを再ロードする。
composer dump-autoload

モデルを作成する。
php artisan make:model Task
カラムを宣言する。
protected $fillable = [
'task'
];

コントローラーを作成。
php artisan make:controller TaskController –resource
CRUD処理は自動で生成されるらしい。
Taskモデルをインポートする。
use App\Task;

ルーティングの設定。
Route::resource('tasks', 'TaskController');

一覧表示の実装。
コントローラのindexメソッドを変更。
public function index()
{
$tasks = Task::all();
return view('tasks.index', ['tasks' => $tasks]);
}

共通ビューを作成。
resources/views/layout.blade.php

 

@yield(‘content’)

 

次にindexページのレイアウトを作成
resources/views/tasks/index.blade.php

@extends('layout')
@section('content')

ToDo

@if ($message = Session::get(‘success’))

{{ $message }}

@endif

 

@foreach ($tasks as $task)@endforeach

No Title
{{ ++$i }} {{ $task->task}}

@endsection

参考サイト
https://itsolutionstuff.com/post/laravel-55-crud-example-from-scratchexample.html
https://qiita.com/sutara79/items/cd4371b246b44a2cf87f

長くなったので登録までいかなかった