Problem: Interner Serverfehler beim Übergeben von Daten von vue.js an Laravel mit axios
Ich habe ein neues Laravel-Projekt erstellt und Breece mit Vue installiert (PHP Artisan Breeze: Vue installieren). Dann habe ich einen Menü-Controller erstellt und menu.vue wie folgt gerendert:
public function index() { $menuItems = Menu::all(); return Inertia::render('Menu', [ 'menuItems' => ]); }
Route::get('menu',[MenuController::class,'index']); Jetzt habe ich CartController
input('id'); $menu = Menu::find($menu_id); $cart=new Cart(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); } }
Hier muss ich die von menu.vue zurückgegebenen Daten speichern menu.vue
{{ Artikelname }}
<-Taste @click="addToCart(item)" class="mt-4 bg-blue-500 text-white py-2 px-4 abgerundet-lg hover:bg-blue-600" > Hinzufügen
问题是当这被调用时
axios .post("/cart", { menu_id: item.id, })
它给了我这个错误: 错误
这是我的 app.js
axios import './bootstrap'; import '../css/app.css'; import { createApp, h } from 'vue'; import { createInertiaApp } from '@inertiajs/vue3'; import { discoverPageComponent } aus 'laravel-vite-plugin/inertia-helpers'; import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'; const appName = window.document.getElementsByTagName('title')[0]?.innerText || „Laravel“; createInertiaApp({ Titel: (Titel) => `${title} - ${appName}`, lösen: (name) => discoverPageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')), setup({ el, App, props, Plugin }) { return createApp({ render: () => h(App, props) }) .use(Plugin) .use(ZiggyVue, Ziggy) .mount(el); }, Fortschritt: { Farbe: '#4B5563', }, });
这是我的app.blade.php
{{ config('app.name', 'Laravel') }} @routes @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead @Trägheit
Dies befindet sich in der Speicher-/Protokolldatei[2023-02-08 16:39:49] local.FEHLER: SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1048 Spalte „menus_id“ darf nicht null sein (SQL: In
carts einfügen (
menus_id,
table,
updated_at,
;created_at ;) value(?, ?, 2023-02-08 16:39:49, 2023-02-08 16:39:49)) {"Exception":"[Object] (Illuminate\Database\QueryException (code: 23000 ): SQLSTATE[ 23000]: Verletzung der Integritätsbeschränkung: 1048 Spalte „menus_id“ darf nicht null sein (SQL: INSERT into
carts (
menus_id, < /code>table< ;code>,
updated_at,
created_at) Wert (?, ?, 08.02.2023 16:39:49, 08.02.2023 16:39 :49)) in D:\Trinity\7th SEM\Project Work\smart_QR_based_restaurant\Suppliers\laravel\Framework\src\Illuminate\Database\Connection.php:760) [stacktrace]
;
这可能是你的问题,
您正在将此对象作为发布数据传递
然后你在控制器中调用一个不存在的输入
$request->input('id')
应该是
$request->input('menu_id');
但是,再次检查您的日志以查看引发的实际错误
此外,您应该在控制器中添加验证,以确保您传递的 ID 存在于表中