【问题标题】:Creating a record to laravel databse with vue.js doesn't work使用 vue.js 向 laravel 数据库创建记录不起作用
【发布时间】:2020-12-28 00:51:51
【问题描述】:

我正在尝试在 laravel 中使用 Vue.js 为我的数据库创建一条新记录,我的 API,数据还可以。但是当我在我的网站上单击创建时,我得到了那个奇怪的错误。

传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 C:\Users\PC\Desktop\Productivity\gitdemo\students\vendor\laravel 中调用\framework\src\Illuminate\Database\Query\Grammars\Grammar.php 在第 884 行

我也有完美的删除功能,但这不起作用...表单输入有v-model,这看起来不错,但它仍然不起作用。

我在 vue.js 上的创建方法

addStudent() {
                axios.post(`api/students/create`, {data:this.students});
            }

在 vue.js 中获取记录

data() {
            return{
                students: [],
            }
        },

        created() {
            axios.get(`api/students`).then(response =>{
                this.students = response.data.data;
            })
        },

控制器

public function store(Request $request)
    {
        Student::create($request->all());

        return view('welcome');
    }

路由(在 api.php 中)

Route::post('students/create', 'StudentController@store');

学生模型

use SoftDeletes;

    protected $dates = ['birth_date'];
    
    protected $guarded = [];

数据中的学生数组具有所有v-model 命名

【问题讨论】:

  • 显示你的后端代码。
  • 你的意思是控制器?
  • 我已经更新了@AhmadMobaraki 的问题
  • 请给我看看学生模型
  • 这样试试,只返回学生return Student:create($request->all());

标签: php laravel vue.js


【解决方案1】:

你不应该直接传递$request->all() 来创建方法。根据您从前端发送到后端的内容,执行以下操作:

$r = $request->all();
$students = $r['data'];
Student:create($students);

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 2014-08-13
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多