我有模特,名为杂志。这个模型代表了杂志表。
magazines
--id
--name
我也有模型,名为Transfer。该模型代表转移表。 在此表中,我希望存储有关产品转移的信息。
transfers
--id
--source
--target
有两个重要的栏目,来源是我得到产品的杂志的id,目标是把产品放的杂志的id。
我应该如何在Eloquent模型中创建关系?我做了类似的事情
public function source()
{
return $this->belongsTo('Magazine', 'source');
}
public function target()
{
return $this->belongsTo('Magazine', 'target');
}
但是,不起作用。如果我调用$ transfer-> source我只得到id,它存储在这个列中(整数值)。但我想得到杂志对象。如果我将方法名称从source()更改为magazine(),Eloquent将返回Magazine对象,这是正确的。
如果源和目标指示在同一个表中,我应该如何创建关系
答案 0 :(得分:2)
您的字段和方法重叠。所以现在你可以这样做:
$transfer->source()->getResult()->name;
但显然这不是处理关系的方式。
也就是说,要使其按预期工作,重命名方法或表字段。我建议这个:
table transfers: id, source_id, target_id
// Transfer model
public function source()
{
return $this->belongsTo('Magazine', 'source_id');
}
public function target()
{
return $this->belongsTo('Magazine', 'target_id');
}
答案 1 :(得分:0)
如果你致电$transfer->source
,你只能获得身份证明。
您还需要加载源
$transfer = Transfer::with('source')->find(123);
然后访问源名称
$nameOfSource = $transfer->source->name