首页 > 解决方案 > 在 Laravel 5.6 中使用 hasOne 检索数据

问题描述

我想知道如何在 laravel 中使用 hasOne 检索数据?例如,我有一个品牌表和一个产品表,其中有一列包含品牌的 id,所以如果一个产品应该有一个品牌“hasOne”,那么这两个表的关系可以完美地工作,但是如果一个产品不一定有品牌,那么当添加产品时,存储在数据库中的品牌ID为0,当我在这条线上提出请求时,laravel给我一个错误。

感谢您的回答。

标签: laravelhas-one

解决方案


当产品没有品牌时,不加0,进入NULL数据库。您将需要更改数据库并添加->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
}

推荐阅读