我有一对一的关系不在一边工作。
我的桌子
`seguro_carro` (
`id_seguro` INT NOT NULL AUTO_INCREMENT,
`matricula` VARCHAR(8) NOT NULL,
`validade` DATE NOT NULL,
`preco` DECIMAL(12,3) NOT NULL,
`tipo_seguro` INT NOT NULL,
`cliente` INT NOT NULL
)
`tipo_seguro_carro` (
`id_tipo_seguro` INT NOT NULL AUTO_INCREMENT,
`descricao` VARCHAR(50) NOT NULL
)
型号: SeguroCarro.php
public function tipoSeguro()
{
return $this->belongsTo('App\TipoSeguroCarro', 'id_tipo_seguro');
}
TipoSeguroCarro.php
public function seguros()
{
return $this->hasMany('App\SeguroCarro','tipo_seguro');
}
我可以TipoSeguroCarro::find(x)->seguros
而不是像SeguroCarro::find(x)->tipoSeguro
我无法理解为什么会这样。 某人?
感谢
答案 0 :(得分:0)
您应该传递tipo_seguro
属性而不是id_tipo_seguro
,因为您的外键在两个关系中都是tipo_seguro
。
由于请求而导致的一些解释:
https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html#method_belongsTo
BelongsTo belongsTo( string $related, string $foreignKey = null, string $otherKey = null, string $relation = null)
https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html#method_hasMany
HasMany hasMany( string $related, string $foreignKey = null, string $localKey = null)
belongsTo
和hasMany
都接受第二个参数作为外键。所以基本上,你有两个涉及的领域 - 第一个是你的主键(id_tipo_seguro
),第二个是外键(tipo_seguro
)。如前所述,两种方法都接受外键作为第二个参数。