我有一个工作模型,其中一个属性是请求者,我试图获取请求者的数据(我已经可以获取主键了)。
这样,我称之为视图:
$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、用户ID、开始日期等。
4条答案
按热度按时间kx7yvsdv1#
我认为这是因为关系的名称。你可以尝试将它重命名为requestor。Laravel有一些内部行为运行在下划线上。它可能只返回id。
w80xi6nr2#
问题似乎是我把关系搞错了,我不得不在请求者模型中使用
hasOne
(最后我使用hasMany
,因为有人可以创建多个工作),而在工作模型中使用belongsTo
。重要注意:模型中的函数名不能与表中的字段名相同。另外,在我的例子中,列名不遵循laravel/eleoent命名法,因此另一个参数与字段名一起添加到
belongsTo
中。工作模式:
申请人型号:
以及如何获取请求者数据:
$obra->solicitante->email
jljoyd4f3#
在控制器中导入
use App\Models\Obra;
。hyrbngr74#
返回的函数必须与表名相同,例如:
表名必须为obra