我有一个工作模型,其中一个属性是请求者,我正在尝试获取请求者的数据(我已经可以获得主键)。
这样我调用视图:
$obras = Obra::all();
return view("obra.index", compact("obras"));
景色:
@forelse ($obras as $i)
<li>{{ $i->requestor_id->email }}</li>
@empty
工作模型中的关系:
public function requestor_id(){
return $this->hasOne(User::class);
}
表格:
用户(申请人)拥有:ID、姓名、电子邮件、密码等
工作有:id、user_id、start_date 等
问题似乎是我的关系错误,我必须在请求者模型中使用
hasOne
(最后我使用hasMany
,因为有人可以创建多个作品)并在工作模型中使用belongsTo
.
重要注意:模型中的函数名称不能与表中的字段名称相同。另外,在我的例子中,列名称不遵循 laravel/eloquent 命名法,因此另一个参数使用字段名称添加到
belongsTo
中。
工作模式:
public function solicitante(){
return $this->belongsTo(User::class, "requestor_id");
}
请求者型号:
public function obra(){
return $this->hasMany(Obra::class, "requestor_id");
}
以及如何获取请求者数据:
$obra->solicitante->email
我认为这是因为关系的名字。您可以尝试将其重命名为请求者。 Laravel 有一些在下划线上运行的内部行为。它可能只返回 id。
public function requestor()
{
return $this->hasOne(User::class);
}
在控制器中导入
use App\Models\Obra;
。
use App\Models\Obra;
$obras = Obra::all();
return view("obra.index", compact("obras"));
返回的函数必须与表名相同 exm:
public function obra(){
return $this->hasMany(Obra::class, "requestor_id");
}
表名必须是obra
$obra->solicitante->email 而不是使用正确的形式 $obra->solicitante=email 因为它无效