将数据从 vue.js 传递到 laravel 9
P粉951914381
P粉951914381 2023-08-31 16:37:26
0
1
462

问题:使用 axios 将数据从 vue.js 传递到 laravel 时出现内部服务器错误

我创建了新的laravel项目并使用vue安装了breece(php artisan Breeze:安装vue)。然后我创建了一个菜单控制器并渲染了 menu.vue,如下所示:

public function index() { $menuItems = Menu::all(); return Inertia::render('Menu', [ 'menuItems' => $menuItems ]); }

Route::get('menu',[MenuController::class,'index']); 现在我创建了 CartController

input('id'); $menu = Menu::find($menu_id); $cart=new Cart(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); } }

这里我必须存储从menu.vue返回的数据 菜单.vue

  

问题是当这被调用时

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 { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'; const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel'; createInertiaApp({ title: (title) => `${title} - ${appName}`, resolve: (name) => resolvePageComponent(`./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); }, progress: { color: '#4B5563', }, });

这是我的app.blade.php

     {{ config('app.name', 'Laravel') }}    @routes @vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"]) @inertiaHead 
@inertia

这是在存储/日志文件中[2023-02-08 16:39:49] local.ERROR:SQLSTATE [23000]:完整性约束违规:1048 列'menus_id'不能为空(SQL:插入放入 carts (menus_id, table, updated_at, created_at) 值 (?, ?, 2023-02-08 16:39:49, 2023-02-08 16:39:49)) {"异常":"[对象] (Illuminate\\Database\\QueryException(代码: 23000): SQLSTATE[ 23000]:完整性约束违规:1048 列 'menus_id' 不能为空(SQL:插入 carts (menus_id, table, updated_at, created_at) 值 (?, ?, 2023-02-08 16:39:49, 2023-02-08 16:39:49)) 在 D:\\Trinity \\第七届SEM\\项目工作\\ smart_QR_based_restaurant \\供应商\\ laravel \\框架\\ src \\ Illuminate \\ Database \\ Connection.php:760)[stacktrace]

P粉951914381
P粉951914381

全部回复 (1)
P粉373596828

这可能是你的问题,

您正在将此对象作为发布数据传递

{menu_id: item.id}

然后你在控制器中调用一个不存在的输入$request->input('id')

$menu_id = $request->input('id'); $menu = Menu::find($menu_id);

应该是$request->input('menu_id');

但是,再次检查您的日志以查看引发的实际错误

此外,您应该在控制器中添加验证,以确保您传递的 ID 存在于表中

public function store(Request $request) { $request->validate([ 'menu_id' => 'required|exists:menus,id' ]); $menu_id = $request->input('menu_id'); $menu = Menu::find($menu_id); $cart=new Cart(); $cart->table=$request->table; $cart->menus_id=$menu_id; $response=$cart->save(); }
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!