我正在尝试将条目存储到数据库中,但是出现此错误。
“传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须是给定int的数组类型,在C:\ xampp \ htdocs \ im-stuff \ test \ vendor \ laravel \ framework \ src中调用\ Illuminate \ Database \ Query \ Grammars \ Grammar.php在第869行“
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'));
}
这时我迷路了,真的不明白。
答案 0 :(得分:1)
您应该尝试将attributes
数组直接传递给create()
函数,例如:
public function addTask($description)
{
$this->tasks()->create($description);
}
Compact创建一个包含传递的变量的数组,在您的情况下:
print_r(compact('description'));
Array
(
[description] => your_array_of_attributes
)
因此,使用compact()
会将属性数组封装在另一个数组中,并为其赋予键'description'
。
当您想将数据传递给视图而不是编写以下代码时,compact()
函数非常有用:
view('materials.index', ['materials'=>$materials, 'users'=>$users]);
您可以写:
view('materials.index', compact('materials', 'users'));
答案 1 :(得分:0)
当您将记录保存到数据库时,为什么要使用compact
呢?就像我在评论中提到的那样,它应该像这样简单而简单:
public function addTask($description)
{
$this->tasks()->create($description);
}
here,您可以找到compact
谢谢