首页 > 解决方案 > 有没有办法为 HasOneThrough 生成数据透视记录

问题描述

我的关系按我的意愿工作,但我不确定将数据插入数据透视表的正确方法。

这行得通,但看起来很复杂:

$toggl = App\Models\Toggl::find($toggl_id);
$teamwork = App\Models\Teamwork::find($teamwork_id);
$tt = new TeamworkToggl();
$tt->teamwork()->associate($teamwork);
$tt->toggl()->associate($toggl);
$tt->save();

对于我发现的其他关系类型,您可以执行以下操作:

$toggl->teamwork()->associate($teamwork);

或者

$toggl->teamwork()->save($teamwork);

这两个都不适用于 HasOneThrough 关系。

这是我的模型的样子:

class Toggl extends Model
{
    public function teamwork(){
        return $this->hasOneThrough(
            Teamwork::class,
            TeamworkToggl::class,
            'toggl_id',
            'id',
            'id',
            'teamwork_id',
        );
    }
}

团队合作的模式是:

class Project extends Model
{
    public function toggl(){
        return $this->hasOneThrough(
            Toggl::class,
            TeamworkToggl::class,
            'teamwork_id',
            'id',
            'id',
            'toggl_id',
        );
    }
}

中间表如下所示:

class TeamworkToggl extends Model
{
    public function teamwork(){
        return $this->belongsTo(Teamwork::class);
    }
    public function toggl(){
        return $this->belongsTo(Toggl::class);
    }
}

难道我做错了什么?

我查看了以下帖子,但那是关于访问数据的,我正在寻找创建数据:hasOneThrough with pivot table laravel eloquent

标签: phplaravelhas-one-through

解决方案


推荐阅读