Laravel 8 - Eloquent 关系无法访问关系属性/值
Laravel 8 - Eloquent Relationship cannot access relation properties / values
模型 1:步行
return $this->belongsTo('App\Models\Device','device_uuid','device_uuid');
}
模型 2:设备
public function walks() {
return $this->hasMany('App\Models\Walks','device_uuid','device_uuid');
}
在我的索引文件中:
<table class="table table-bordered">
<tr>
<th>No</th>
<th>Walk Date</th>
<th>Device Name</th>
<th>In</th>
<th>Out</th>
<th width="280px">Action</th>
</tr>
@foreach ($walks as $walk)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $walk->walk_datetime }}</td>
<td>{{ $walk->device->device_uuid }}</td> <========
<td>{{ $walk->walk_in }}</td>
<td>{{ $walk->walk_out }}</td>
<td>
<form action="{{ route('walks.destroy',$walk->id) }}" method="POST">
<a class="btn btn-primary" href="{{ route('walks.edit',$walk->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
这会导致错误:
<td>{{ $walk->device->device_uuid }}</td> <========
“正在尝试获取 属性 'device_uuid' 的 non-object”
如果我这样做:
<td>{{ $walk->device }}</td>
我得到:
{"id":1,"device_uuid":"1902101300368","device_name":"Test 1","created_at":null,"updated_at":null}
这意味着关系正确。
我应该使用任何其他方式来访问“device_mame”属性吗?
与以下问题相关。所有步行都链接了有效的设备。
遍历列表。这就是我打印 -> $walk->device 时显示的内容
行走列表(数据库)
设备列表(数据库)
:) 在我看来有些 Walks
没有 Device
。这就是它(通常)抛出该错误的原因。
Laracasts 上的类似问题。
或者你可以做的是使用三元运算符
<td>{{(isset($walk->device->device_uuid)? $walk->device->device_uuid : ''}}</td>
模型 1:步行
return $this->belongsTo('App\Models\Device','device_uuid','device_uuid');
}
模型 2:设备
public function walks() {
return $this->hasMany('App\Models\Walks','device_uuid','device_uuid');
}
在我的索引文件中:
<table class="table table-bordered">
<tr>
<th>No</th>
<th>Walk Date</th>
<th>Device Name</th>
<th>In</th>
<th>Out</th>
<th width="280px">Action</th>
</tr>
@foreach ($walks as $walk)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $walk->walk_datetime }}</td>
<td>{{ $walk->device->device_uuid }}</td> <========
<td>{{ $walk->walk_in }}</td>
<td>{{ $walk->walk_out }}</td>
<td>
<form action="{{ route('walks.destroy',$walk->id) }}" method="POST">
<a class="btn btn-primary" href="{{ route('walks.edit',$walk->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
这会导致错误:
<td>{{ $walk->device->device_uuid }}</td> <========
“正在尝试获取 属性 'device_uuid' 的 non-object”
如果我这样做:
<td>{{ $walk->device }}</td>
我得到:
{"id":1,"device_uuid":"1902101300368","device_name":"Test 1","created_at":null,"updated_at":null}
这意味着关系正确。
我应该使用任何其他方式来访问“device_mame”属性吗?
与以下问题相关。所有步行都链接了有效的设备。
遍历列表。这就是我打印 -> $walk->device 时显示的内容
行走列表(数据库)
设备列表(数据库)
:) 在我看来有些 Walks
没有 Device
。这就是它(通常)抛出该错误的原因。
Laracasts 上的类似问题。
或者你可以做的是使用三元运算符
<td>{{(isset($walk->device->device_uuid)? $walk->device->device_uuid : ''}}</td>