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

我正在尝试将条目存储到数据库中,但出现此错误。


" 传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定的 int,在 C:\xampp\htdocs\im-stuff\test\vendor\laravel\framework\src\Illuminate\ 中调用第 869 行的 Database\Query\Grammars\Grammar.php


request()->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'));

}

在这一点上我迷路了,真的不明白。


撒科打诨
浏览 176回答 2
2回答

九州编程

您应该尝试将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'));

胡说叔叔

compact正如我在评论中提到的那样,当您将记录保存到数据库时,为什么要使用它应该像这样简单易行:public function addTask($description){    $this->tasks()->create($description);}在这里你可以找到工作compact谢谢
打开App,查看更多内容
随时随地看视频慕课网APP