I create 3 tables
articles : id title
category: id name
article_category: id article_id category_id main
And in Category
model:
public function articles()
{
return $this->belongsToMany(Article::class);
}
I want add data to article_category
:
$article_id = 20;
$category_id = 1;
$category = Category::find($category_id);
$cat[$article_id] = ['main'=>false];
$category ->articles()->sync($cat);
$article_id = 20;
$category_id = 2;
$category = Category::find($category_id);
$cat[$article_id] = ['main'=>false];
$category ->articles()->sync($cat);
Now In article_category
I have:
article_id category_id main
20 1 false
20 2 false
Ok It seems normal.
for example if add this again:
$article_id = 20;
$category_id = 2;
$category = Category::find($category_id);
$cat[$article_id] = ['main'=>false];
$category ->articles()->sync($cat);
It not generate duplication rows.
Now my problem is this:
If I add a new article_id, It remove all last saved records.
for example with add these codes:
$article_id = 21;
$category_id = 1;
$category = Category::find($category_id);
$cat[$article_id] = ['main'=>false];
$category ->articles()->sync($cat);
$article_id = 21;
$category_id = 2;
$category = Category::find($category_id);
$cat[$article_id] = ['main'=>false];
$category ->articles()->sync($cat);
I expect this:
article_id category_id main
20 1 false
20 2 false
21 1 false
21 2 false
But In my databse I have this:
article_id category_id main 21 1 false 21 2 false
what's my wrong?