访问父母关系的父母laravel

问题描述

我正在laravel中构建一个应用程序,其中每个通道都有一些部分,您可以在这些部分中发布线程。我想从线程访问通道。 到目前为止的层次是 -渠道 - 部分 ---线程

这是三个模型类

频道


use Illuminate\Database\Eloquent\Model;

class Channel extends Model
{
    public function users(){
        return $this->belongsToMany('App\User');
    }
    public function posts(){
        return $this->hasMany('App\Post');
    }
    public function isSubscribed($id){
        return $this->users()->find($id);
    }
    public function sections(){
        return $this->hasMany('App\Section');
    }
}

部分

{
    public function channel(){
        return $this->belongsTo('App\Channel');
    }

    public function threads(){
        return $this->hasMany('App\Thread');
    }
}

线程

{
    protected $fillable=['title','body','solved'];

    public function solutions(){
        return $this->hasMany('App\Solution');
    }
    public function comments(){
        return $this->hasMany('App\ThreadComment');
    }
    public function section(){
        return $this->belongsTo('App\Section');
    }
    public function arguments(){
        return $this->belongsToMany('App\Argument');
    }
    public function user(){
        return $this->belongsTo('App\User');
    }
    public function reports(){
        return $this->morphTo('App\Report','reportable');
    }
}

我想做的是在线程类中有一个channel()方法,该方法使我无需每次都$thread->section->channel就可以访问频道

解决方法

如果您确实要使用,请使用附件。

public function getChannelAttribute()
{
    return $this->section->channel;
}
,

如果为此使用软件包没有问题,请使用https://github.com/staudenmeir/eloquent-has-many-deep。您可以具有任何级别的关系。

有关详细信息,请阅读包装的用法部分。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...