繁体   English   中英

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

[英]How can I store data into database? (One to One Relationship Laravel)

我有两个模型公司:

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

和子弹:

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列中

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

这应该有所帮助!

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

我认为您不需要为此使用单独的表格。 您将始终拥有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)。 您可以忘记它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM