【问题标题】:Laravel multi level relationshipLaravel 多级关系
【发布时间】: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'
    ];
}

【问题讨论】:

    标签: php laravel eloquent


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 2018-06-28
      • 2013-08-21
      • 2019-06-23
      • 1970-01-01
      • 2018-09-18
      • 2020-03-12
      • 1970-01-01
      相关资源
      最近更新 更多