我可以在Laravel Eloquent中要求一对一的关系吗?

时间:2015-09-21 14:57:38

标签: laravel-5 eloquent

我有一个Product类和一个Detail类。我想将速度与基本数据(sku,价格)区分开来。但总会有很长的描述。因此商店中的每件商品都会有两条记录。

有没有办法强制或要求两个记录?有没有办法要求存在1对1的关系 - 这样才能始终有效......

$P = new App\Product(['sku'=>'123','price'=>69]);
$P->Detail->html = '<p>Lorem ipsum.</p>';
$P->push();

我的hasOne / belongsTo东西都很好。但如果细节记录还不存在〜我会收到错误。我想知道细节是否可以自动神奇地存在。

1 个答案:

答案 0 :(得分:0)

您可以做很多事情来“强制”配对记录存在,但是您可以使用getter来使描述的检索更安全一些。类似的东西:

class Product extends Model {
    public function detail()
    {
        return $this->hasOne('App\Detail');
    }

    public function getDetailHtml()
    {
        if ($this->detail()->count()) {
            return $this->detail->html;
        }
    }
}