Как избежать дублирования записей по элементу?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как избежать дублирования записей по элементу?

Сообщение Anonymous »

Ошибку наблюдаю, пытаюсь поставить старое значение т.е. уже сохраненное. Однако дело в том, что старое значение каждый раз извлекается со своим собственным идентификатором.
SQLSTATE[23000]: Integrity constraint violation: 19 UNIQUE constraint failed: tags.name (Connection: sqlite, SQL: insert into "tags" ("name", "user_id", "updated_at", "created_at") values (laravel, 1, 2024-12-13 05:16:56, 2024-12-13 05:16:56))

Вот что я пытаюсь
$tag_ids = [];
foreach($tag_names as $tag_name) {//tag_names is array of tags

$tag = Tag::firstOrCreate([ //Tag is a Model
'name' => $tag_name,
'user_id' => auth()->id(),
]);

if($tag) {
$tag_ids[] = $tag->id;
}
}

Вот модель тега
class Tag extends Model {
protected $guarded = [];

public function user() {
return $this->belongsTo(User::class);
}
}

Вот миграция
Schema::create('tags', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->foreignId('user_id')->constrained();
$table->timestamps();
});


Подробнее здесь: https://stackoverflow.com/questions/792 ... or-an-item
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»