我正在尝试将条目存储到数据库中,但出现此错误。" 传递给 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'));
胡说叔叔
TA贡献1804条经验 获得超8个赞
compact正如我在评论中提到的那样,当您将记录保存到数据库时,为什么要使用它应该像这样简单易行:
public function addTask($description)
{
$this->tasks()->create($description);
}
在这里你可以找到工作compact
谢谢
- 2 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消