如何将数据存储到数据库中? (一对一关系Laravel)

时间:2019-01-14 17:50:35

标签: php laravel laravel-5.7

我有两种模式 公司:

public function slug(){
    return $this->hasOne(Slug::class);
}

和Sl:

public function company(){
    return $this->belongsTo(Company::class);
}

插入表:

Schema::create('slugs', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('company_id')->unsigned()->index()->nullable();
        $table->foreign('company_id')->references('id')->on('companies');
        $table->string('slug');
    });

如何将数据存储到Slug表中? 我要将公司ID存储到company_id列中,并将公司名称的str_slug()存储到slug列中

2 个答案:

答案 0 :(得分:0)

假设您要向ID为1的公司添加子弹。

这应该有帮助!

$company = App\Company::find(1);
$company->slug()->save(new App\Slug([$data]));

答案 1 :(得分:0)

我认为您不需要为此使用单独的表格。您将始终拥有1个可能不会更改的值(由于SEO)。但... 您可以使用观察者https://laravel.com/docs/5.7/eloquent#observers 在观察者中的created()方法上,您可以像这样进行操作:

public function created(Company $company){
   \App\Slug::create(['company_id' => $company->id, 'slug' => str_slug($company->name)]);
}

如果子弹在公司的表中作为字段,则可以执行相同的操作。只需使用create()方法和$ company-> slug = str_slug($ company-> name)。而且您可以忘记它们。