laravel 在雄辩模型中调用未定义的方法

new9mtju  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(123)

我试图存储一个简单的形式到我的数据库。我的模型是我有工作,其中每个工作可以包含几个任务。因此,我的模型看起来像这样:

用户
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中存储以下代码:

$request->user()
    ->jobs()
    ->tasks()
    ->create($validated);

我得到错误:
调用未定义的方法Illuminate\Database\Eloquent\Relations\HasMany::tasks()
我很确定我正在做一个新手错误通过$请求,但不能弄清楚。谢谢你的任何帮助!

gdrx4gfi

gdrx4gfi1#

您的问题是在jobs上调用tasks,但是jobs()是一个关系,而不是模型或集合。
要解决这个问题,你必须逐一检查:

$request->user()
    ->jobs()
    ->each(function (Job $job) use ($validated) {
        $job->tasks()
            ->create($validated);
    });

或者,可以尝试使用“具有多个通过”。

dwbf0jvd

dwbf0jvd2#

调用关系函数($request->user()->jobs())将得到关系类(Illuminate\Database\Eloquent\Relations\HasMany),而不是集合本身,像$request->user()->jobs那样访问将得到作业集合。

相关问题