首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔:嵌套关系中的额外关系

拉勒维尔:嵌套关系中的额外关系
EN

Stack Overflow用户
提问于 2021-03-09 07:04:31
回答 1查看 81关注 0票数 0

我有一个典型的嵌套关系:

User hasMany licences

Licence belongsTo User

Licence hasMany attestations

Attestation belongsTo Licence

Attestation hasMany vehicles

Vehicle belongsTo Attestation

现在,出于实际原因,我需要添加一个与层次结构中最低项的额外关系:

Licence hasMany vehicles

并可选择:

Vehicle belongsTo Licence

我想知道这样做是否可行和安全,是否有副作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 08:09:58

在Laravel8.x版本中,您可以尝试HasManyThrough,根据他们的文档https://laravel.com/docs/8.x/eloquent-relationships#has-many-through。在你的例子中,它应该是这样的:

代码语言:javascript
复制
class Licence extends Model
{
    //...

    /**
     * Get all of the vehicles for the licence.
     */
    public function vehicles()
    {
        return $this->hasManyThrough(Vehicle::class, Attestation::class);
    }
}

BelongsTo不是这样工作的,您必须使用https://laravel.com/docs/8.x/eloquent-relationships#has-one-through

代码语言:javascript
复制
class Vehicle extends Model
{
    //...

    /**
     * Get all of the vehicles for the licence.
     */
    public function licence()
    {
        return $this->hasOneThrough(Licence::class, Attestation::class);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66542248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档