author
ブログ主ぴきまる

laravelプロジェクト作成(Docker)

pageBlogImg

laravelプロジェクト作成(docker)

laravelのプロジェクト作成と基本的なところまでメモがてら記載しています。
新規プロジェクト作成時や最初どうやるんだっけって時に思い出し用

1. Laravelプロジェクトの作成

プロジェクトを作成します。my-appの部分(プロジェクト名)はお好きにつけてください。

curl -s "https://laravel.build/my-app" | bash

オプション sailコマンドのパスを通す

もしsailコマンドのパスを通していない方は、通しておくことをおすすめします。

alias sail="./vendor/bin/sail"


2. コンテナの立ち上げ

プロジェクトディレクトリに移動し、sailコマンドでコンテナを立ち上げます。

% cd my-app
% sail up -d

コンテナ内で作業する方はsail shellで入ってphp artisanコマンドに置き換えて実行ください。

データの準備 Modelの作成

デフォルトで存在するUserと、ユーザーに紐付いたPostモデルを作成します。

php artisan make:model モデルファイル名(Itemとか) -a

-aはモデル、ファクトリー、マイグレーション、シーダー、リクエスト、リソースコントローラ、ポリシー全て作成する
コントローラ:モデルをuseした状態かつCRUDメソッド記載された状態で作成される
モデル:DBのテーブルと接続するファイル
リクエスト:バリデーション関係のファイル保存時と更新時のファイルが作成される
ポリシー:アクセス権限の設定等できたりするファイル
■database
マイグレーション:テーブル定義ファイル
シーダー:データベースに初期データを登録するため
ファクトリー:ダミーデータを大量に作成するときのファイル

マイグレーションファイルの編集

①テーブル定義

作成されたマイグレーションファイルにてテーブル定義を記載
laravel公式マイグレーション

public function up()
    {
        Schema::create('テーブル名', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('memo')->nullable();
            $table->boolean('is_selling')->default(true);
            $table->timestamps();
        });
    }

【補足】

リレーションやテストデータ等を用意したい場合はファクトリとシーダーファイルの編集を行う
参考サイト

マイグレーション実行

php artisan migrate

//sailでマイグレート実行
sail artisan migrate
// sailコマンド使用できないとき(sailコマンドのパスを通す)
alias sail="./vendor/bin/sail"

laravelとsail1
laravelとsail2

【補足】マイグレーションファイルだけ作成したい場合は下記のコマンド

php artisan make:migration create_テーブル名_table

ルーティング

Laravelでは、以下のようにルーティングにRoute::resouceを指定することで、CRUDルーティングを一度に行うことができます。

routes/web.phpuse App\Http\Controllers\ItemController;
Route::resource('items', ItemController::class)
    ->middleware(['auth', 'verified']);

ルーティング確認コマンド

php artisan route:list

【補足】ルーティングを制限する場合

使用しないメソッドをコントローラーで削除した際に、URLを直だたきされるとないと例外が出てしまうので以下のようにルーティングを制限します。
resourceを使ったときのルーティングを制限する方法は2つあります。
/routes/web.php

// show、updateのルーティングを削除

// onlyを使う方法
Route::resource('items', 'ItemController', ['only' => ['index', 'create', 'edit', 'store', 'destroy']]);

// exceptを使う方法
Route::resource('items', 'ItemController', ['except' => ['show', 'update']]);


Related