#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
オプションに-a
でModel,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
日本語に変換
'faker_locale' => 'ja_JP',
インサート文
$result = DB::table('{テーブル名}')->insert([
'{カラム名}' => '',
]);
use App\models\Bookmark;
public function run()
{
factory(Bookmark::class, 100)->create();
}
seedの実行
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.php
をja
に変更する。
'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