Laravel 拉威尔的关系有很多不起作用
我想通过在存储用户id的“finished_by”列中查找用户名来打印该用户名。但我得到了这个错误: 正在尝试获取非对象的属性“name” 库存模型已由具有用户ID的完成 这是我的blade.phpLaravel 拉威尔的关系有很多不起作用,laravel,error-handling,relationships,Laravel,Error Handling,Relationships,我想通过在存储用户id的“finished_by”列中查找用户名来打印该用户名。但我得到了这个错误: 正在尝试获取非对象的属性“name” 库存模型已由具有用户ID的完成 这是我的blade.php @foreach($inventories as $inventory) <tr> <td>{{$inventory['id']}}</td> <td>{{$inventory->user->name}}&l
@foreach($inventories as $inventory)
<tr>
<td>{{$inventory['id']}}</td>
<td>{{$inventory->user->name}}</td>
</tr>
@enforeach
和我的关系
Inventory.php
public function users(){
return $this->belongsTo(User::class, 'finished_by');
}
public function user(){
return $this->belongsTo("App\User", 'finished_by');
}
User.php
public function inventories(){
return $this->hasMany(Inventory::class, 'finished_by');
}
public function inventories(){
return $this->hasMany("App\Inventory", 'finished_by');
}
首先改变你的关系 Inventory.php
public function users(){
return $this->belongsTo(User::class, 'finished_by');
}
public function user(){
return $this->belongsTo("App\User", 'finished_by');
}
User.php
public function inventories(){
return $this->hasMany(Inventory::class, 'finished_by');
}
public function inventories(){
return $this->hasMany("App\Inventory", 'finished_by');
}
您需要在即时加载中添加user
关系
$inventories = Inventory::where('company_id',$company_id)->with('user')->get();
现在进行模板渲染
@foreach($inventory作为$inventory)
{{$inventory->id}
@如果($inventory->user)
{{$inventory->user->name}
@否则
“无用户”
@恩迪夫
@enforeach
我不知道您有哪些字段,但请测试此代码:
@foreach($inventories as $inventory)
<tr>
<td>id : {{$inventory['id']}}</td>
<td>name : {{$inventory->users->toArray()['name']}}</td>
</tr>
@endforeach
@foreach($inventory作为$inventory)
id:{{$inventory['id']}
名称:{{$inventory->users->toArray()['name']}
@endforeach
这是因为您在库存模型中定义了用户,但在刀片文件中调用了用户,因此您必须将功能更改为:
public function user(){
return $this->belongsTo(User::class, 'finished_by');
}
更新控制器的代码//您需要添加关系
$inventories = Inventory::where('company_id',$company_id)->with('user')->get();
更改为
{{$inventory->users->name}}
没有更改,我有相同的错误。在此处显示您的表架构更改了所有内容,但它仍然保持不变。如果您有用户使用该finished\u by
字段,请检查它once@NemanjaZolak代码没有错。对于您的$inventory
之一,存在空用户,这就是您出现该错误的原因。只需在那里添加一个复选框,@if($inventory->user)
然后只打印名称是的,这就是问题所在,在我放入@if语句后,它就可以工作了,谢谢!在对null上的成员函数toArray()进行更改后,我出现了这个错误我放置了@if语句及其工作方式。谢谢,你能解释一下为什么它必须使用toArray()吗?是的,使用@IF
,你可以防止错误。为了简单起见,我使用了toArray
,并将输出放入一个数组中。