проблема в отношениях один ко многим в Laravel - PullRequest
0 голосов
/ 30 сентября 2019

Task.php

public function projects()
    {
        return $this->hasMany(Project::class);
    }

Project.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');
}

Теперь, когда я вызываю метод сохранения, он дает мне следующую ошибку Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::save() Я не могу понять, почему это происходит. Пожалуйста, помогите мне решить это. Я буду благодарен тебе

1 Ответ

0 голосов
/ 30 сентября 2019

Измените это

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

на это

$task->save();

Кроме того, проект имеет отношение «многие к одному» с задачами, поэтому имя функции должно быть единичным, так как многие проекты могут принадлежатьтолько одно задание

public function task()
{
    return $this->belongsTo(Task::class);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...