首页 > 解决方案 > 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(),我无法理解为什么会发生这种情况。请帮我解决这个问题。我会对你很好

标签: phplaraveleloquent

解决方案


改变这个

 $project->tasks()->save($task);

对此

$task->save();

此外,项目与任务具有多对一关系,因此函数名称应该是单数,因为许多项目可能只属于一项任务

public function task()
{
    return $this->belongsTo(Task::class);
}

推荐阅读