php - laravel中一对多关系的问题
问题描述
任务.php
public function projects()
{
return $this->hasMany(Project::class);
}
项目.php
public function tasks()
{
return $this->belongsTo(Task::class);
}
我的控制器
public function store(Request $request,$id)
{
$request->validate([
'member_name' => 'required',
'module' => 'required_without:file',
'file' => 'required_without:module'
]);
$project=Project::find($id);
$task = new Task();
if ($request->hasfile('file'))
{
$ext = $request->file->getClientOriginalName();
$filename=$request->module.".".$ext;
$request->file->move(public_path() . '/members/', $filename);
$task->file = $filename;
}
if($request->module)
{
$task->module=$request->module;
}
$task->member_name=$request->member_name;
$project->tasks()->save($task);
return redirect('tasks');
}
现在,当我调用 save 方法时,它给了我以下错误Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::save()
,我无法理解为什么会发生这种情况。请帮我解决这个问题。我会对你很好
解决方案
改变这个
$project->tasks()->save($task);
对此
$task->save();
此外,项目与任务具有多对一关系,因此函数名称应该是单数,因为许多项目可能只属于一项任务
public function task()
{
return $this->belongsTo(Task::class);
}