【Laravel】Modelを使うときはインジェクトする

えびさん

毎回newしなくていいから楽だよ

コンストラクタでインジェクトする場合

<?php

namespace App\Http\Controllers;

use App\User;

class UserController extends Controller
{
    private $user;

    public function __construct(User $user)
    {
        // コンストラクタ関数内でインジェクト
        $this->user = $user;
    }

   /**
    * ユーザー画面TOP
    *
    * @return \Illuminate\View\View
    */
   public function index()
   {
      $users = $this->user->all();
      return view('user.index', compact('users'));
   }

  /**
    * 登録処理
    *
    * @return \Illuminate\View\View
    */
   public function store(Request $request)
   {
      $this->user->create($request->all());
      return redirect('/user/index');
   }
}

各メソッドでインジェクションする場合

<?php

namespace App\Http\Controllers;

use App\History;

class UserController extends Controller
{
  /**
   * 履歴一覧
   * 引数で指定してあげるだけで自動インジェクトされる
   *
   * @return \Illuminate\View\View
   */
  public function history(History $history)
    {
        $histories = $history->all();
        return view('history.index', compact('histories'));
    }
}
いくらさん

他のメソッドで使わないやつとか、個別でインジェクションすると良いかも