[英]Laravel Call to undefined method in eloquent model
我正在尝试将一个简单的表单存储到我的数据库中。 我的 model 是我的工作,每个工作可以包含多个任务。 因此我的模型看起来像这样:
public function jobs()
{
return $this->hasMany(Job::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function tasks()
{
return $this->hasMany(Task::class);
}
public function job()
{
return $this->belongsTo(Job::class);
}
当我现在想使用以下代码存储在 TaskController.php 中时:
public function store(Request $request, Job $job)
{
$request['job_id'] = $job->id;
$validated = $request->validate([
'message' => 'required|string|max:255',
]);
$request->user()->jobs()->tasks()->create($validated);
return redirect(route('tasks.index'));
}
我收到错误:
调用未定义的方法 Illuminate\Database\Eloquent\Relations\HasMany::tasks()
我很确定我在传递 $request 时犯了一个菜鸟错误,但无法弄清楚。 感谢您的任何帮助!
您的问题是您在jobs
上调用tasks
,但jobs()
是一种关系,而不是 model 也不是集合。
要修复它,您必须对每一个进行 go:
$request->user()
->jobs()
->each(function (Job $job) use ($validated) {
$job->tasks()
->create($validated);
});
或者,您可以尝试使用Has Many Through 。
调用关系 function ( $request->user()->jobs()
) 将得到关系 class ( Illuminate\Database\Eloquent\Relations\HasMany
),而不是集合本身。 像$request->user()->jobs
这样访问会让你得到工作集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.