Laravel 多级关系

Posted

技术标签:

【中文标题】Laravel 多级关系【英文标题】:Laravel multi level relationship 【发布时间】:2022-01-01 03:50:00 【问题描述】:

我想创建显示 class_meets 信息的视图 有关其他信息,我想显示表主题中的主题名称 已经在尝试 hasOneTrough、hasManyTrough 和 belongsToMany 但这就像函数只显示从主题到 class_meets,而我需要的是相反的

想在 ClassMeet 模型上添加一些功能

这是我的清单模型:

主题
class Subject extends Model

    use SoftDeletes;
    public $table = 'subjects';
    protected $dates = ['created_at', 'updated_at', 'deleted_at'];
    protected $fillable = [
        'subject_name'
    ];

常规
class Routine extends Model

    use SoftDeletes;
    public $table = 'routines';
    protected $dates = ['created_at', 'updated_at', 'deleted_at'];
    protected $fillable = [
        'academic_year_id',
        'subject_id',
        'classes_id'
        'day',
        'start_time',
        'end_time',
    ];

课堂聚会
class ClassMeet extends Model

    use SoftDeletes;
    public $table = 'class_meets';
    protected $dates = ['created_at', 'updated_at', 'deleted_at', 'date'];
    protected $fillable = [
        'routine_id',
        'date'
    ];

【问题讨论】:

【参考方案1】:

hasOneTrough,hasManyTrough 在这种情况下不起作用。

你需要添加belongsTo关系到ClassMeet,Routine

class ClassMeet extends Model

    use SoftDeletes;
    public $table = 'class_meets';
    protected $dates = ['created_at', 'updated_at', 'deleted_at', 'date'];
    protected $fillable = [
        'routine_id',
        'date'
    ];

    public routine()
         return $this->belongsTo('App\Routine','routine_id','id')
    

例程模型是这样的

class Routine extends Model

    use SoftDeletes;
    public $table = 'routines';
    protected $dates = ['created_at', 'updated_at', 'deleted_at'];
    protected $fillable = [
        'academic_year_id',
        'subject_id',
        'classes_id'
        'day',
        'start_time',
        'end_time',
    ];
     public subject()
         return $this->belongsTo('App\Subject','subject_id','id')
     

现在你可以通过例程获得主题了。

ClassMeet::with('routine.subject')->get();

【讨论】:

以上是关于Laravel 多级关系的主要内容,如果未能解决你的问题,请参考以下文章

尝试从子模型重新访问父模型的 laravel 多级关系急切加载问题

Laravel API 资源中的多级关系

Laravel Eloquent 中的多级深度 hasMany 关系

如何在 Laravel Eloquent 中构建具有多级关系的查询

laravel 多级关联

使用 Laravel 模型保存多级数组