我想通过在'finished_by'列中找到用户名来打印用户名,其中存储了用户ID。但我得到这个错误:
尝试获取非对象的属性“名称”
广告资源模型的finished_by
具有用户ID。
这是我的blade.php
@foreach($inventories as $inventory)
<tr>
<td>{{$inventory['id']}}</td>
<td>{{$inventory->user->name}}</td>
</tr>
@enforeach
和我的索引方法
$company_id = Auth::user()->company_id;
$inventories = Inventory::where('company_id',$company_id)->get();
return view('inventories', compact('inventories', 'companies'));
和我的关系
Inventory.php
public function users(){
return $this->belongsTo(User::class, 'finished_by');
}
user.php的
public function inventories(){
return $this->hasMany(Inventory::class, 'finished_by');
}
答案 0 :(得分:0)
首先改变您的关系
Inventory.php
public function user(){
return $this->belongsTo("App\User", 'finished_by');
}
user.php的
public function inventories(){
return $this->hasMany("App\Inventory", 'finished_by');
}
您需要在急切加载中添加user
关系
$inventories = Inventory::where('company_id',$company_id)->with('user')->get();
现在模板渲染
@foreach($inventories as $inventory)
<tr>
<td>{{$inventory->id}}</td>
<td>
@if($inventory->user)
{{$inventory->user->name}}
@else
'No User'
@endif
</td>
</tr>
@enforeach
答案 1 :(得分:0)
我不确切知道您拥有哪些字段,但测试此代码:
@foreach($inventories as $inventory)
<tr>
<td>id : {{$inventory['id']}}</td>
<td>name : {{$inventory->users->toArray()['name']}}</td>
</tr>
@endforeach
答案 2 :(得分:0)
这是因为您已在广告资源模型中定义用户,但您已在刀片文件中调用用户,因此您必须更改功能:
public function user(){
return $this->belongsTo(User::class, 'finished_by');
}
答案 3 :(得分:0)
更新控制器的代码//您需要添加关系
$inventories = Inventory::where('company_id',$company_id)->with('user')->get();