MVCモデルではロジックはモデルに書きます。
そのテーブルに対応するモデルにメソッドとして記述します。
そうすることで、コントローラもすっきりしますし、使い回しもできます。
「モデルにロジックを書く」という記事というのがあまりなかったので、今回は自分の備忘録としてエントリーします。
条件式
例:レッスンに参加するかの判定
LessonAttendance.php (Model)
:
// レッスンの参加判定
public static function getLessonAttendanceStatus($user_id,$year) {
return LessonAttendance::where('user_id',$user_id)->where('lesson_year',$year)->count();
}
:
ポイント
インスタンスを生成しなくてもアクセス可能にするために静的メンバにします。
public function
→ public static function
user_list.blade.php(View)
コントローラやビューで定義したメソッドを読み込みます。
:
@foreach($users as $user)
:
<?php
// レッスン参加フラグ
$lesson_attendance_flag = \App\Models\LessonAttendance::getLessonAttendanceStatus($user->id,2019);
:
@endforeach
ユーティリティ
よく使うギミックもメソッド化にすることで便利になります。
例:都道府県
Pref.php(Model)
:
public static function selectlist()
{
$prefs = Pref::all();
$list = array();
$list += array( "" => "選択してください" ); //selectlistの先頭を空に
foreach ($prefs as $pref) {
$list += array( $pref->name => $pref->name );
}
return $list;
}
:
signup.blade.php(View)
:
<div class="register-input-container">
<div class="horizontal">
<div>
<label for="register-birthday">出身地</label>
</div>
<div>
{!! Form::select('birthplace', App\Models\Pref::selectlist(), old('birthplace'), ['id' => 'birthplace','required' => 'required']) !!}
</div>
</div>
</div>
:
こんな感じでモデルにロジックを書いていきます。
また何か思いついたら追記しようと思います。
とりあえず、以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。