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

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

Сообщение Anonymous »

Ошибку наблюдаю, пытаюсь поставить старое значение т.е. уже сохраненное. Однако дело в том, что старое значение каждый раз извлекается со своим собственным идентификатором.

SQLSTATE[23000]: Нарушение ограничения целостности: 19 Ограничение UNIQUE не выполнено: tags.name (Соединение: sqlite, SQL: вставить в значения «теги» («имя», «user_id», «updated_at», «created_at») (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»