Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Php 尝试读取“属性”;电邮;关于int-Laravel 8_Php_Laravel_Eloquent_Laravel 8_Eloquent Relationship - Fatal编程技术网

Php 尝试读取“属性”;电邮;关于int-Laravel 8

Php 尝试读取“属性”;电邮;关于int-Laravel 8,php,laravel,eloquent,laravel-8,eloquent-relationship,Php,Laravel,Eloquent,Laravel 8,Eloquent Relationship,我有一个工作模型,其中一个属性是请求者,我试图获取请求者的数据(我已经可以获取主键) 这样,我将视图称为: $obras = Obra::all(); return view("obra.index", compact("obras")); 观点: @forelse ($obras as $i) <li>{{ $i->requestor_id->email }}</li>

我有一个工作模型,其中一个属性是请求者,我试图获取请求者的数据(我已经可以获取主键)

这样,我将视图称为:

    $obras = Obra::all();
    return view("obra.index", compact("obras"));
观点:

    @forelse ($obras as $i)
        <li>{{ $i->requestor_id->email }}</li>
    @empty
表:

用户(申请人)有:id、姓名、电子邮件、密码等


工作有:id、用户id、开始日期等。

我认为这是因为关系的名称。您可以尝试将其重命名为请求者。Laravel有一些内部行为是基于下划线的。它可能只返回id

public function requestor()
{    
    return $this->hasOne(User::class);
}

问题似乎是我的关系错误,我不得不在请求者模型中使用
hasOne
(最后我使用了
hasMany
,因为有人可以创建多个作品),在工作模型中使用
belongsTo

重要信息注意:模型中函数的名称不能与表中字段的名称相同。此外,在我的例子中,列名不遵循laravel/Elount命名法,因此另一个参数被添加到带有字段名的
belongsTo

工作模式:

    public function requestor_id(){
    
    return $this->hasOne(User::class);
    }
public function solicitante(){
    return $this->belongsTo(User::class, "requestor_id");
}
请求者模型:

 public function obra(){
   return $this->hasMany(Obra::class, "requestor_id");
}

如何获取申请者数据:
$obra->requestante->email

这样我得到了一个错误,它似乎不是在作品中寻找申请者的id,而是在申请者表中寻找作品的id。你能共享这两个表的字段列表吗?如果你不遵守命名约定,Laravel就不会建立正确的关系,我只是更新了问题!