我有模特名叫“杂志”。这个模型代表杂志表。
magazines
--id
--name我也有模型,名叫Transfer。此模型表示传输表。在这个表中,我想要存储有关产品转移的信息。
transfers
--id
--source
--target有两个重要的栏目,来源是从我得到产品的杂志id,目标是我放置产品的杂志id。
我应该如何在雄辩的模型中建立关系?我做了这样的事
public function source()
{
return $this->belongsTo('Magazine', 'source');
}
public function target()
{
return $this->belongsTo('Magazine', 'target');
}但是,不管用。如果我调用$transfer->source,我只得到id,它存储在这个列中(整数值)。但我想得到杂志的对象。如果我将方法名从source()更改为(),那么雄辩将返回Magazine对象,这是正确的。
如果源和目标在同一个表中指示,我应该如何创建关系
发布于 2014-12-04 15:49:46
您的字段和方法重叠。所以现在你可以这么做了:
$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');
}发布于 2014-12-04 15:45:20
如果您调用$transfer->source,您只会得到id。您也需要加载您的源。
$transfer = Transfer::with('source')->find(123);然后访问源的名称。
$nameOfSource = $transfer->source->namehttps://stackoverflow.com/questions/27296428
复制相似问题