やりたいこと
外部キーで繋いだデータの一部のみをビューに表示したく、何かアドバイスをいただけたらと思います。
(修正すべき箇所は概ね分かるのですが、コードの組み方について方法が見出せずにいます)
画像のように、現在右側「goodsテーブル」の全てのカラムを引っ張ってきている状態ですが、これを全てのカラムでなく一部カラム(shoes)のみ表示させたいものです。
※ Employeeの一覧表に、Goodsの情報を複数列挙する旨のビューにしたい。
EmployeesController
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Employee; use App\Goods; class EmployeesController extends Controller { public function index() { $employees = Employee::with('goods')->get(); //ここのコードの組み方を修正したい return view('index', ['employees' => $employees, ]); } public function create() { $user =\Auth::user(); return view('employee_create'); } public function store(Request $request) { $request->validate([ 'employee_id' => 'required|min:6|max:6', 'employee_name' => 'required', 'office' => 'required', ]); $employee = new Employee; $employee->employee_id = $request->input('employee_id'); $employee->employee_name = $request->input('employee_name'); $employee->office = $request->input('office'); $employee->save(); $goods = new Goods; $goods->uniform = $request->input('uniform'); $goods->winter_clothes = $request->input('winter_clothes'); $goods->shoes = $request->input('shoes'); $goods->other = $request->input('other'); $goods->memo = $request->input('memo'); $goods->employee_id = $employee->id; $goods->save(); return redirect(route('employee_create.index'))->with('flash_message','社員を登録しました'); } }
index.blade.php
@extends('layouts.app') @section('content') <table class="table table-hover"> <thead class="thead-dark"> <tr> <th scope="col">社員番号</th> <th scope="col">名前</th> <th scope="col">所属事業所</th> <th scope="col" colspan="4">貸与品</th> </tr> </thead> <tbody> @foreach($employees as $employee) <tr> <td scope="row">{{ $employee->employee_id }}</td> <td scope="row">{{ $employee->employee_name }}</td> <td scope="row">{{ $employee->office }}</td> <td>{{ $employee->goods }}</td> //ここのコードを修正したい </tr> @endforeach </tbody> </table> @endsection
Employee.php
<?php namespace App; use IlluminateSupportFacadesDB; use Illuminate\Database\Eloquent\Model; class Employee extends Model { protected $fillable = ['id','emlpoyee_id','employee_name','office']; public function authorize() { return true; } protected $guarded = array('id'); public function goods() { return $this->hasMany(Goods::class); } }
Goods.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Goods extends Model { protected $fillable = ['employee_id','uniform','winter_clothes','shoes','other','memo']; protected $guarded = array('id'); public function getDate() { return $this->belongsTo(Employee::class); } public function employee() { return $this->belongsTo(Employee::class); } }
回答1件
あなたの回答
tips
プレビュー