在Laravel 5.6中使用hasOne检索数据

时间:2018-06-19 14:10:45

标签: laravel has-one

我想知道如何在Laravel中使用hasOne检索数据? 例如,我有一个品牌表和一个产品表,其中的列包含品牌的ID,因此,如果一个产品应该有一个品牌“ hasOne”,则可以很好地处理两个表的关系,但是如果一个产品不一定具有品牌,那么当添加产品时,存储在数据库中的品牌ID为0,而当我在此行中请求时,laravel给我一个错误。

感谢您的回答。

1 个答案:

答案 0 :(得分:3)

当产品没有品牌时,不要在数据库中输入NULL,而不必添加0。 您将需要更改数据库并将->nullable()添加到brand_id

此外,似乎Product应该belongToBrand而不是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
}