Laravel Seeding Database

Я использую Laravel и пытаюсь вставить некоторые данные в свою базу данных (phpmyadmin). У меня есть две таблицы, пользователи и Carrinho. Их отношения с пользователями имеет много Carrinho. В таблице Carrinho у меня есть внешний ключ IDUser. Я получаю ошибки, когда пытаюсь посеять Карринью.
Вот мой файл CarrinhoSeeder:

<?php

class CarrinhoTableSeeder extends Seeder {

public function run()
{
DB::table('carrinho')->delete();

$carrinho = array(
array(
'IDUser' => 1,
'estado'      => true,
),
array(
'IDUser' => 2,
'estado'      => true,
)
);

DB::table('carrinho')->insert( $carrinho );
}

}

Я получаю ошибку:

[Осветите \ Database \ QueryException] SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (loj
a
,carrinho, ОГРАНИЧЕНИЕ carrinho_iduser_foreign ИНОСТРАННЫЙ КЛЮЧ (IDUser) РЕКОМЕНДАЦИИ users (IDUser) НА УДАЛЕННОМ КАСКАДЕ)
(SQL: вставить в carrinho (IDUser, estado) значения (1, 1), (2, 1))

Кто-нибудь знает, что я не так?

0

Решение

Вы должны убедиться, что пользователи с указанными идентификаторами (1 & 2) уже существует в базе данных. Если это все еще не работает, вы можете временно отключить проверку внешнего ключа с помощью следующего:

DB::statement('SET FOREIGN_KEY_CHECKS=0;');

DB::table('carrinho')->insert( $carrinho );

DB::statement('SET FOREIGN_KEY_CHECKS=1;');
2

Другие решения

Хотя ответа @sisou достаточно, чтобы решить проблему, но я считаю, что это не совсем тот путь, которому следует следовать.

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

Просто убедитесь, что у вас есть пользователи с этими идентификаторами (что вы ссылаетесь в carrinho Таблица).

Ваша ошибка ясно указывает на то, что у вас нет этих пользователей в таблице пользователей.

Надеюсь, что добавление пользователей с этими идентификаторами решит вашу проблему.

Btw, Имена ваших столбцов также не соответствуют соглашению Laravel. Laravel будет ожиданием user_id по умолчанию, но вы используете IDUser, Это вызовет проблемы.
Таким образом, вы должны задавать это в ваших отношениях.
Если у вас есть размытые линии в отношениях Laravel, вы можете проверить документы Вот

0

По вопросам рекламы [email protected]