在我的Laravel-5.8应用程序中,我试图查看索引上的动态输入记录。
这是索引视图刀片:
public function index()
{
$userCompany = Auth::user()->company_id;
$leavetypes = HrLeaveType::where('company_id', $userCompany)->get();
return view('hr.leave_types.index')->with('leavetypes', $leavetypes);
}
表格:
CREATE TABLE `hr_leave_types` (
`id` int(11) UNSIGNED NOT NULL,
`company_id` int(11) DEFAULT NULL,
`leave_type_name` varchar(100) NOT NULL,
`leave_type_code` varchar(20) DEFAULT NULL,
`description` longtext DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `hr_leave_types`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `hr_leave_types_uniq1` (`company_id`,`leave_type_name`),
ADD UNIQUE KEY `hr_leave_types_uniq2` (`company_id`,`leave_type_code`);
ALTER TABLE `hr_leave_types`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT;
CREATE TABLE `hr_leave_type_details` (
`id` int(11) NOT NULL,
`leave_type_id` int(11) NOT NULL,
`company_id` int(11) NOT NULL,
`employment_type_id` int(11) NOT NULL,
`no_of_days` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `hr_leave_type_details`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `hr_leave_type_details_uniq1` (`company_id`,`leave_type_id`,`employment_type_id`);
ALTER TABLE `hr_leave_type_details`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
I am developing a dynamic input field. This involves two tables:
class HrLeaveType extends Model
{
public $timestamps = false;
protected $table = 'hr_leave_types';
protected $primaryKey = 'id';
protected $fillable = [
'company_id',
'leave_type_name',
'number_of_days',
'leave_type_code',
];
public function leavetypedetail()
{
return $this->hasMany('App\Models\Hr\LeaveTypeDetail');
}
}
class HrLeaveTypeDetail extends Model
{
public $timestamps = false;
protected $table = 'hr_leave_type_details';
protected $primaryKey = 'id';
protected $fillable = [
'leave_type_id',
'company_id',
'employment_type_id',
'no_of_days',
];
protected $casts = [
'data' => 'array',
];
public function leavetype()
{
return $this->belongsTo('App\Models\Hr\HrLeaveType');
}
public function employmenttype()
{
return $this->belongsTo('App\Models\Hr\HrEmploymentType');
}
}
视图
<tbody>
@foreach($leavetypes as $key => $leavetype)
<td>
{{$leavetype->leave_type_name ?? '' }}
</td>
<td>
{{$leavetype->leave_type_code ?? '' }}
</td>
<td>
{!! Str::words($leavetype->description, 20, ' ...') !!}
</td>
<td>
@foreach($leavetype->leavetypedetail as $key => $leavetypedetail)
<ul class="list-unstyled">
<li>
{{$key+1}}. {{$leavetypedetail->employmenttype->employment_type ?? '' }}
</li>
</ul>
@endforeach
</td>
<td>
@foreach($leavetype->leavetypedetail as $key => $leavetypedetail)
<ul class="list-unstyled">
<li>
{{$key+1}}. {{$leavetypedetail->employmenttype->employment_type ?? '' }}
</li>
</ul>
@endforeach
</td>
<td>
@foreach($leavetype->leavetypedetail as $key => $leavetypedetail)
<ul class="list-unstyled">
<li>
{{$key+1}}. {{$leavetypedetail->no_of_days ?? '' }}
</li>
</ul>
@endforeach
</td>
</tr>
@endforeach
</tbody>
当我尝试查看索引视图刀片时,出现此错误:
SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'hr_leave_type_details.hr_leave_type_id'(SQL:从hr_leave_type_details中选择*,其中hr_leave_type_details.hr_leave_type_id = 1且hr_leave_type_de_s不是)。
但是,当我删除这段代码时:
<td>
@foreach($leavetype->leavetypedetail as $key => $leavetypedetail)
<ul class="list-unstyled">
<li>
{{$key+1}}. {{$leavetypedetail->employmenttype->employment_type ?? '' }}
</li>
</ul>
@endforeach
</td>
<td>
@foreach($leavetype->leavetypedetail as $key => $leavetypedetail)
<ul class="list-unstyled">
<li>
{{$key+1}}. {{$leavetypedetail->no_of_days ?? '' }}
</li>
</ul>
@endforeach
</td>
错误消失了。
leave_type_id在表中。我不知道从哪里获取hr_leave_type_id
我该如何解决?
谢谢
答案 0 :(得分:0)
将雄辩模型关系更改为:
public function leavetype()
{
return $this->belongsTo('App\Models\Hr\HrLeaveType', 'leave_type_id', 'id');
}
public function employmenttype()
{
return $this->belongsTo('App\Models\Hr\HrEmploymentType', 'employment_type_id', 'id' );
}