24 |
laravelによるスキャフォールディング (4) |
DocController index()の修正
yiiと異なり、外部テーブルを認識できないため、コントローラの修正も必要になってきます。前半がコントローラの修正、後半がビューの修正となります。
前半のコントローラの修正としてapp/Http/Controllers/DocController.php内のindexアクションの修正を行います。
public function index(Request $request)
{
$docs = $this->docRepository->all();
return view('docs.index')
->with('docs', $docs);
}
となっているところを修正します。
まずモデルの定義が必要です。
use App\Models\Category;
次に外部テーブルの要素が必要なので、categoriesに要素を全部集めてビューに渡します。
public function index(Request $request)
{
$docs = $this->docRepository->all();
$categories = Category::all()->pluck('name','id');
return view('docs.index',compact('docs','categories'));
}
ここでpluck()とcompact()の説明をします。pluck()は、all()で集めたモデルのオブジェクトの集合に対して、シンプルに'id'をキーにした'name'をバリューとするarrayを作成するメソッドです。
次に、compact()は例えば'doc'という変数名をキーにしてdocオブジェクトをバリューとするarrayを作成します。この場合は'doc'と'categories'という2つの変数をビューに渡します。このビューへの変数を渡す手法はyiiと全く同じです。