Problème : erreur de serveur interne lors de la transmission de données de vue.js à laravel à l'aide d'axios
J'ai créé un nouveau projet Laravel et installé Breece en utilisant vue (php artisan Breeze : install vue). Ensuite, j'ai créé un contrôleur de menu et rendu menu.vue comme ceci :
index de fonction publique() { $menuItems = Menu :: tous (); return Inertia::render('Menu', [ 'menuItems' => $menuItems ]); }
Route::get('menu',[MenuController::class,'index']); Maintenant, j'ai créé CartController
input('id'); $menu = Menu :: trouver ($ menu_id); $cart=nouveau panier(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); } }Ici, je dois stocker les données renvoyées par menu.vue menu.vue
importer { Head } depuis '@inertiajs/vue3' ; {{ nom de l'article }}
Ajouter 问题是当这被调用时
axios .post("/cart", { menu_id : élément.id, })它给了我这个错误: 错误
这是我的 app.js
axios importer './bootstrap'; importer '../css/app.css'; importer { createApp, h } depuis 'vue' ; importer { createInertiaApp } depuis '@inertiajs/vue3' ; importer { solvePageComponent } depuis 'laravel-vite-plugin/inertia-helpers' ; importer { ZiggyVue } depuis '../../vendor/tightenco/ziggy/dist/vue.m' ; const appName = window.document.getElementsByTagName('title')[0]?.innerText || « Laravel » ; créerInertiaApp({ titre : (titre) => `${title} - ${appName}`, résoudre : (nom) => solvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')), setup({ élément, application, accessoires, plugin }) { return createApp({ render: () => h(App, props) }) .use(plug-in) .use(ZiggyVue, Ziggy) .mount(el); }, progrès: { couleur : '#4B5563', }, });这是我的app.blade.php
{{ config('app.name', 'Laravel') }} @routes @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead ≪/tête> @inertie Ceci est dans le fichier de stockage/journal
[2023-02-08 16:39:49] local.ERROR : SQLSTATE[23000] : violation de contrainte d'intégrité : 1048 La colonne 'menus_id' ne peut pas être nulle (SQL : Insérer dans
carts(
menus_id,
table,
updated_at,
;created_at;) value(?, ?, 08/02/2023 16:39:49, 08/02/2023 16:39:49)) {"Exception": [Objet] (Illuminate\Database\QueryException (code : 23000 ) : SQLSTATE[ 23000] : violation de contrainte d'intégrité : 1048 La colonne 'menus_id' ne peut pas être nulle (SQL : INSÉRER dans
carts(
menus_id, < /code>table< ;code>,
updated_at,
created_at) valeur (?, ?, 08/02/2023 16:39:49, 08/02/2023 16:39 :49)) dans D:\Trinity\7th SEM\Project Work\smart_QR_based_restaurant\Suppliers\laravel\Framework\src\Illuminate\Database\Connection.php:760) [stacktrace]
p>
C'est peut-être votre problème,
Vous transmettez cet objet en tant que données de publication
Ensuite vous appelez une entrée dans le contrôleur qui n'existe pas
$request->input('id')
devrait être
$request->input('menu_id');
Cependant, vérifiez à nouveau vos journaux pour voir l'erreur réelle générée
Vous devez également ajouter une validation dans votre contrôleur pour vous assurer que l'ID que vous transmettez existe dans le tableau