为了账号安全,请及时绑定邮箱和手机立即绑定

LARAVEL 参数 1 传递给 ... 必须是数组类型,给定的整数

LARAVEL 参数 1 传递给 ... 必须是数组类型,给定的整数

PHP
撒科打诨 2021-12-24 10:28:24
我正在尝试将条目存储到数据库中,但出现此错误。" 传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定的 int,在 C:\xampp\htdocs\im-stuff\test\vendor\laravel\framework\src\Illuminate\ 中调用第 869 行的 Database\Query\Grammars\Grammar.phprequest()->validate(['description' => 'required']);$project->addTask(compact('description'));好的,所以这确实有效,但下一个更好的版本无效。$attributes = request()->validate(['description' => 'required']);$project->addTask($attributes);所以这是正在使用的模型。public function tasks(){    return $this->hasMany(Task::class);}public function addTask($description){    $this->tasks()->create(compact('description'));}在这一点上我迷路了,真的不明白。
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您应该尝试将attributes数组直接传递给create()函数,例如:


public function addTask($description)

{

    $this->tasks()->create($description);

}

Compact创建一个包含传递的变量的数组,在您的情况下:


print_r(compact('description'));

Array

(

    [description] => your_array_of_attributes

)

因此,compact()您将您的属性数组封装在另一个数组中,为它们提供 key 'description'。


compact()当您想将数据传递给视图时,该函数非常有用,而不是这样写:


view('materials.index', ['materials'=>$materials, 'users'=>$users]);

你可以写:


view('materials.index', compact('materials', 'users'));


查看完整回答
反对 回复 2021-12-24
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

compact正如我在评论中提到的那样,当您将记录保存到数据库时,为什么要使用它应该像这样简单易行:


public function addTask($description)

{

    $this->tasks()->create($description);

}

在这里你可以找到工作compact


谢谢


查看完整回答
反对 回复 2021-12-24
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信