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')
@if ($message = Session::get(‘success’))
@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
長くなったので登録までいかなかった