laravel - 此集合实例上不存在属性。(Laravel 6)
问题描述
<td>
我有一个在我的表上添加行的 for 循环。问题是,我无法访问我的 Schedule 模型的属性,它一直给我
此集合实例上不存在属性 [date_of_shift]。
<table class="table table-bordered table-responsive">
<thead>
<th>Employee</th>
<!-- Format of date_of_shift field: format('Y-m-d') -->
@for ($i = 0; $i < 7; $i++)
<th>
{{ \Carbon\Carbon::today()->addDays($i)->format('F j, Y') }}<br />
{{ \Carbon\Carbon::today()->addDays($i)->format('D') }}
</th>
@endfor
</thead>
<tbody>
@foreach ($employees as $employee)
<tr>
<td>{{ $employee->user->last_name }}, {{ $employee->user->first_name }} {{ $employee->user->maiden_name }} </td>
@for ($j = 0; $j < 7; $j++)
@if ( $employee->schedule->date_of_shift == \Carbon\Carbon::today()->addDays($j)->format('Y-m-d') )
<td>{{ $employee->schedule->time_of_shift }}</td>
@else
<td><strong>REST DAY</strong></td>
@endif
@endfor
</tr>
@endforeach
</tbody>
</table>
员工.php
public function schedule () {
return $this->hasMany('App\Schedule');
}
附表.php
public function employee () {
return $this->belongsTo('App\Employee');
}
什么是解决方法?
解决方案
由于您的关系是返回集合HasMany
的$employee->schedule
一个实例,因此在您的情况下,您可以做的最简单的事情就是获取->first()
集合的结果......
@if ( $employee->schedule->first()->date_of_shift == \Carbon\Carbon::today()->addDays($j)->format('Y-m-d') )
<td>{{ $employee->schedule->first()->time_of_shift }}</td>
@else
<td><strong>REST DAY</strong></td>
@endif
或者
或者不要更改刀片中的任何代码,而是将您的关系HasMany
从HasOne
public function schedule () {
return $this->hasOne('App\Schedule');
}
推荐阅读
- java - Confluent Platform 中的 Kafka 心跳相关日志在哪里?
- html - 如何在 Prestashop 1.6 Megamenu 的 URL 类型菜单中添加文本框?
- vue.js - 使用 kendo-grid columns 属性的自定义 Kendo Vue Grid Wrapper 列模板
- java - 如何找到两个java列表之间的区别?
- python - 如何使用 XGBRFRegressor 提前停止?
- java - java.lang.ClassLoader.findClass 找不到类(Forge 1.16.5)
- python - 你有没有遇到过 RuntimeError: await was not used with future?
- python - 如何在嵌套列表中找到数字的位置?
- python - 最pythonic的方式来计时一个循环
- jira - 如何查看分配给我和我的团队成员的 JIRA 票证