小编gih*_*nka的帖子

使用laravel同步方法插入数据时数据重复?

我已经使用了建立关系laravel sync的方法belongsToMany。调用此方法后,有时会将重复数据插入到数据透视表中。

这是code我用过的。

{

    $selectedScreenCategories = $this->screenCategorySiteFieldsModel->addSameKeyForElementsInArray($screenCategoryIds,'screen_category_id');
    $siteField->screenCategories()->sync($selectedScreenCategories);

}
Run Code Online (Sandbox Code Playgroud)

这是migration用于创建pivot表的。

{
    {
    public function up()
        {
            Schema::create('site_field_screen_categories',function (Blueprint $table){
                $table->increments('id');
                $table->unsignedInteger('screen_category_site_field_id')->nullable(false);
                $table->unsignedInteger('screen_category_id')->nullable(false);                
                $table->foreign('screen_category_site_field_id','screen_category_site_field_id')->references('id')->on('screen_category_site_fields');                            
                $table->foreign('screen_category_id')->references('id')->on('screen_categories');
            });
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

这就是belongsToMany关系。

function screenCategories(){
    return  $this->belongsToMany('App\ScreenCategory','site_field_screen_categories','screen_category_site_field_id','screen_category_id');
}
Run Code Online (Sandbox Code Playgroud)

这是调用该方法的pivot表。beforesync

在此输入图像描述 这是sync的数组$selectedScreenCategories

[
    0 => ["screen_category_id" => 6]
    1 => ["screen_category_id" => 3]
    2 => ["screen_category_id" => 5]
]    
Run Code Online (Sandbox Code Playgroud)

这就是pivotafter调用sync方法。 …

synchronization laravel eloquent

1
推荐指数
1
解决办法
3033
查看次数

标签 统计

eloquent ×1

laravel ×1

synchronization ×1