我想知道如何在Laravel中使用hasOne检索数据? 例如,我有一个品牌表和一个产品表,其中的列包含品牌的ID,因此,如果一个产品应该有一个品牌“ hasOne”,则可以很好地处理两个表的关系,但是如果一个产品不一定具有品牌,那么当添加产品时,存储在数据库中的品牌ID为0,而当我在此行中请求时,laravel给我一个错误。
感谢您的回答。
答案 0 :(得分:3)
当产品没有品牌时,不要在数据库中输入NULL
,而不必添加0。
您将需要更改数据库并将->nullable()
添加到brand_id
列
此外,似乎Product
应该belongTo
和Brand
而不是hasOne
您的Product
模型应类似于:
class Product extends Model {
public function brand() {
return $this->belongsTo(Brand::class);
}
}
还有您的Brand
class Brand extends Model {
public function products() {
return $this->hasMany(Product::class);
}
}
然后您可以执行以下操作:
if($product->brand) {
// product has brand
}
else {
// product does not have brand
}