PHP
laravel
laravel5.4

[メモ]Laravel5.4でブログシステムを作る04(ルート、コントローラとデータベースの設定)

ルートとコントローラの雛形

今回から実際にブログシステムを開発する。
第一回の文章モジュールの要件定義に沿ってルートをコントローラの雛形を作る。

まずは、コントローラをLaravelのコマンドラインで生成する。
文章モジュールに関する部分をPostとし、文章を扱っているコントローラをPostControllerにしよう。

$ php artisan make:controller PostController

コントローラを使用するには、Controllerクラスを継承することが必要

class PostController extends Controller
{
    // 文章リストを表示
    public function index(){}
    // 文章の詳細を表示
    public function show(){}
    //文章を作成
    public function create(){}
    //作った文章を保存、投稿
    public function store(){}
    //作った文章を編集
    public function edit(){}
    //文章を更新し、投稿
    public function update(){}
    //文章を削除
    public function delete(){}
}

続いて、routes/web.phpのルートを編集する。
ご注意:{}が含まれるものを後ろに置く。

// 文章リストを表示
Route::get('/posts','PostController@index');


//文章を作成 1.作成画面 
Route::get('/posts/create','PostController@create');
//文章を作成 2. 投稿
Route::post('/posts','PostController@store')

//文章を削除
Route::get('/posts/delete','PostController@delete');
//文章の詳細を表示
Route::get('/posts/{post}','PostController@show');
//作った文章を編集 1.画面 
Route::get('/posts/{post}/edit','PostController@edit');
//文章を作成 2. 更新を投稿
Route::put('/posts/{post}','PostController@update');

データベースの基本情報を設定

ルートディレクトリの直下で.envファイルを探す。使っているデータベースはmysqlで以下のように修正する:
各項目に実際のデータベースの設定を入れる。

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=jianshu
DB_USERNAME=xxxxxx
DB_PASSWORD=xxxxxx

マイグレーションを使ってテーブルを生成

マイグレーションについて:

マイグレーションとはチームでアプリケーションデータベースのスキーマを更新し共有できるようなもので、
今回はまずマイグレーションを生成する。

$ php artisan migrate:install

実際のデータベースを調べたら、jianshuというデータベースの中にmigrationsのテーブルが生成したら、.envの設定が正しいと証明。

文章のテーブルの構成を考える:

description Field TYPE LENGTH
記事文章を記録するid id INT 10
記事文章のタイトル title VARCHAR 100
記事文章の内容、本文 content TEXT
記事文章の作者を記録するid user_id INT 11
文章が投稿された日時 create_at TIMESTAMP
文章が更新された日時 updated_at TIMESTAMP

表名をLaravelが推奨された通り、英文名+複数型とする。
モデルとテーブルの対応関係を考えた上で、モデル名はpostだとしたら、テーブル名をpostsとする。

次に、マイグレーションを使ってテーブルを生成する:

$ php artisan make:migration create_posts_table

database/migrationsディレクトリの中に生成日時+create_posts_table.phpが生成される。
このファイルに入って、CreatePostsTableのクラスに以下のようにメソッドを追加する。

  public function up()
    {
        //テーブルを作成
        Schema::create('posts',function(Blueprint $table){
            //idを自動的に増加
            $table->increments('id');
            $table->string('title',100)->default('');
            $table->text('content');
            $table->integer('user_id')->default(0);
            $table->timestamps();
        });


    }
    public function down()
    {
        //ロールバック
        Schema::dropIfExists('posts');
    }

テーブルを設定し終わったら、以下のように執行し、postsテーブルが生成される。

$ php artisan migrate

ロールバックする

$ php artisan migrate:rollback