1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelの機能、ルール

Last updated at Posted at 2019-07-19

#MVCフレームワークに基づく構成
#view
app/resources/view

Laravelではデフォルトでbladeのテンプレートエンジンが組み込まれている。
viewを作成する場合、bladeテンプレートエンジンを使用する。

CSRF対策の記述

<from method="post" action="">
    @csrf
</from>

#controller
app/Http/Controllers

$ php artisan make:controller {ファイル名}

app/resources/view/home.blade.php にアクセス
usersのテーブルを取得する


use Illuminate\Support\Facades\DB;

public function index()
    {
     $users = DB::table('users')->get();
        return view('home');
    }

トランザクション処理

public function index(){
    DB::beginTransaction();
    
    try{
        //処理
        DB::commit(); 
    }catch(/Exception $e){
        DB::rollback();
    }

}

#model
app/database/factories

オプションに-aModel,migrate,seedsファイルが作成される

$ php artisan make:model {ファイル名} -a

論理削除の記述

use Illuminate\Database\Eloquent\SoftDeletes;

class Friend extends Model
{
    use SoftDeletes;
    protected $dates = ['{カラム名}']; 
}

作成されたクラスは、同じ名前のテーブルと同期する。
Friendクラスとfriendsテーブルが自動で同期するルールとなる。
ルールに反している場合、Friendクラスで指定する
またプライマリーキーがid以外の場合も指定する

class Friend extends Model
{
    protected $table = '{テーブル名}';
    protected $primaryKey = '{プライマリーキーのカラム名}';
}

アクセサの方法
アクセサの定義を行うと、予め取得するカラムのフォーマットを定義できる。

class Friend extends Model
{
    public function get{プロパティ名}Attribute{
        return $this->{プロパティ名}.$this->{任意の文字};
    }
}

viewでプロパティ名を指定して表示できる。

#ルーティング
app/routes

Route::get('{path}','{コントローラー名}@{メソッド名}');

#マイグレーション
app/database/migrations
マイグレーションファイルの作成

$ php artisan make:migration {ファイル名}

DBへテーブルを作成する

$ php artisan migrate
public function up()
    {
        Schema::create('{テーブル名}', function (Blueprint $table) {
            $table->string('{カラム名}');
        });
    }

ロールバック時の処理

$ php artisan migrate:rollback
public function doun()
    {
        Schema::create('{テーブル名}', function (Blueprint $table) {
            $table->string('{カラム名}');
        });
    }

マイグレーションのカラム更新パッケージインストール

$ composer require doctrine/dbal

#seed
app/database/seeds

$ php artisan db:seed

日本語に変換

app/config/app.php
'faker_locale' => 'ja_JP',

インサート文

database/factories/UserFactory.php
$result = DB::table('{テーブル名}')->insert([
            '{カラム名}' => '',
        ]);
database/seeds/BookmarkSeeder.php
use App\models\Bookmark;

    public function run()
    {
        factory(Bookmark::class, 100)->create();
    }

seedの実行
database/seeds/DatabaseSeeder.php に実行する設定を記載する。

database/seeds/DatabaseSeeder.php
    public function run()
    {
         $this->call(UserSeeder::class);
    }

#バリデーション
コントローラーのメソッドに記載する。
区切ることでバリデーションを複数指定できる。

use App/rules/{独自バリデーションクラス名};

public function index(Reqest $reqest)
    {
     $reqest->validate([
            '{name名}' => '{バリデーション}|{バリデーション}',
            '{name名}' => '['{バリデーション}',new {独自バリデーションクラス名}]'
        ]);
    }

エラー文の日本語化
resources/lang/en/validation.php のバリデーション内容が表示される。
resources/lang/ja/validation.php ファイルを作成し日本語を記入する。
config/app.phpjaに変更する。

'locale' => 'ja',

独自のバリデーションを追加する。

$ php artisan make:rule {クラス名}

app/Rules/{クラス名}.php

    public function passes($attribute, $value)
    {
        if(preg_match({正規表現},$value){
            return true;
        }else{
            return false;
        }
    }

viewのバリデーションエラーの記載

@if($errors->any())
    @foreach($errors->all() as $error)
        {{ $error }}
    @endforeach
@endif

#ログイン

$ php artisan make:auth

laravel.png

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?