#mysql #laravel #laravel-8
#mysql #laravel #laravel-8
Вопрос:
Привет, у меня проблема, когда я вставляю свои данные из laravel в MySQL с ошибкой SQLSTATE [23000]: нарушение ограничения целостности: ограничение 4025
Вот контроллер хранилища
public function store(Request $request)
{
// $faker = Faker::create('id_ID');
$image = $request->file('Product_photo');
$extension = $image->getClientOriginalExtension();
$name = $request->Name;
$file_name = $name.'.'.$extension;
$image->move("images/listcar/", $file_name);
DB::table('car')
->insert([
//'id' => $faker->unique()->numberBetween($min = 0, $max = 200),
'product_photo' => $file_name,
'name' => $request->Name,
'production_year' => $request->Production_year,
'price' => $request->Price,
'merk' => $request->Merk,
'description' => $request->Description,
'varian' => $request->Variant,
'machine' =>$request->Machine,
'transmision' => $request->Transmision,
'wheel' => $request->Wheel,
]);
return redirect('/admin');
Вот мой блейд
<body>
<h1>Tambah Mobil</h1>
<div class="container">
<form action="/car/add" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<th>Nama</th><br>
<input type="text" name="Name" value=""><br/><br>
<th>Tahun Produksi</th><br>
<input type="text" name="Production_year" value=""><br/><br>
<th>Harga</th><br>
<input type="number" name="Price" value=""><br/><br>
<th>Select Product Image</th><br>
<input type="file" name="Product_photo" /><br/><br>
<th>Merek</th><br>
<input type="text" name="Merk" value=""><br/><br>
<th>Deskripsi</th><br>
<input type="textarea" name="Description" value=""><br/><br>
<th>Varian</th><br>
<input type="text" name="Variant" value=""><br/><br>
<th>Mesin</th><br>
<input type="text" name="Machine" value=""><br/><br>
<th>Transmisi</th><br>
<input type="text" name="Transmision" value=""><br/><br>
<th>Penggerak Roda</th><br>
<input type="text" name="Wheel" value=""><br/><br>
<br>
<input class="btn btn-primary" type="submit" value="Tambah Data Mobil">
</form>
<br>
<br>
</div>
Я действительно не знаю, где я ошибся, поэтому, пожалуйста, скажите мне, есть ли неправильные концепции
Комментарии:
1. Вы не устанавливаете первичный ключ вручную, база данных назначит его при вставке записи. Удалите это
'id' => $faker->unique()->numberBetween($min = 0, $max = 200),
2. @vandettadyckies Вам нужно установить
id
какauto increment
, а затем нет необходимости устанавливать его черезFaker
.3. Сообщение об ошибке предоставляет полное сообщение об ошибке, не удаляйте его.
4. хорошо, я уже обновил его, теперь я использую автоматическое увеличение, но та же ошибка все еще происходит
5. Попробуйте очистить таблицу и начать с нуля, так как ваш столбец «id» испорчен. Теперь все будет божьим, так как вы добавили свойство автоматического увеличения
Ответ №1:
Измените параметры сортировки в таблице mysql — utf8mb4_general_ci : )
Комментарии:
1. Это один из хороших ответов
Ответ №2:
Проверьте свою модель $fillable
массива. Убедитесь, что все столбцы, в которые будут вставлены записи, являются частью вашего $fillable
Ответ №3:
у меня была такая же проблема и решена:
если вы сохраните не-json в поле JSON, эта ошибка произошла следующим образом:
$item = new WhatsAppWebhook($data);
$item->save();
return $item;
вам необходимо закодировать
$payload = array("payload"=>json_encode($data));
$item = new WhatsAppWebhook($payload);
$item->save();
return $item;