Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉威尔的关系有很多不起作用_Laravel_Error Handling_Relationships - Fatal编程技术网

Laravel 拉威尔的关系有很多不起作用

Laravel 拉威尔的关系有很多不起作用,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

我想通过在存储用户id的“finished_by”列中查找用户名来打印该用户名。但我得到了这个错误:

正在尝试获取非对象的属性“name”

库存模型已由具有用户ID的完成

这是我的blade.php

@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
,并将输出放入一个数组中。