Как санкционирование данных, повторенных в таблице шарнире

Я работаю в laravel 5.7; У меня есть таблица шарнир между людьми и амулетами (он называется mascotas_personas), поля этой относительной таблицы:

id
id_persona
id_mascota

Мне нужно, чтобы та же комбинация между человеком и амулетом никогда не повторился, но не, как делание утверждения

0
задан 20.03.2019, 19:14
2 ответа

Если ты это не хочешь сделать на уровне базу данных, как они упомянули об этом в комментариях, ты можешь aГ±adir одна validaciГіn перед тем, как реализовывать операции, в которых ты нуждаешься:

$person = Person::find(1);
$pet = Pet::find(5);

if ($person->pets->contains($pet))
{
    return '¡Esta mascota ya es tuya!';
}
else
{
    $person->pets()->save($pet); // o attach() si es una relación: m-m.

    return '¡Tu mascota fue registrada con éxito!'; 
}
0
ответ дан 02.12.2019, 05:22
  • 1
    Большое спасибо, я я функционирую верно. – Felipe 21.03.2019, 21:49

Я предполагаю, что ты хочешь то, что ты хочешь, он состоит в том, чтобы предотвращать повторение данных (двойственность), хороший этого добиваются от нескольких форм, ты можешь делать это с migration например:

public function up()
    {
        Schema::create('persona_pet', function (Blueprint $table) {
            $table->integer('id')->unsigned();
            $table->integer('person_id')->unsigned()->unique();
            $table->foreign('person_id')->references('id')->on('personas');
            $table->integer('pet_id')->unsigned()->unique();
            $table->foreign('pet_id')->references('id')->on('pets');
            $table->timestamps();
        });
    }

- Надеялся, что он подал тебе

0
ответ дан 02.12.2019, 05:22
  • 1
    Привет, OP говорит, что он хочет сделать это из-за programació n (из-за algú n я мотивирую). Все же, чтобы избегать того, чтобы удвоились комбинации, его было бы $table->unique(['person_id', 'pet_id']) для этого случая. – Francisco Garrido 20.03.2019, 21:40

Теги

Похожие вопросы