首页 > 解决方案 > 如何在laravel eloquent中建立三个表之间的关系

问题描述

我有三个表,部分,问题和选项。每个部分都有很多问题,每个问题都有很多选项。如何从这些相互关联的表中获取数据?

部分模型与 Question 模型的关系

      class Section extends Model
      {
      use HasFactory;
      protected $primaryKey='sectionid';
       public function questions(){
       return $this->hasMany(Question::class,'sectionid')->orderBy('order');
     }
   }

Question模型与Option模型的关系:

class Question extends Model
{
  use HasFactory;
   protected $primaryKey='questionid';
   public $timestamps = true;
   public function options(){
     return $this->hasMany(Option::class,'questionid');
  }
}

我的查询:

            $data=Section::with('questions')
                            ->where('formid',$formId)
                            ->orderBy('sectionid')
                            ->get()
                            ->toJson();

它返回这个: 输出

我希望每个问题成员都包含与之相关的选项数组。

标签: phplaraveleloquent

解决方案


您可以使用嵌套关系,如下所示。因此它也会获取问题选项

 $data=Section::with(['questions','questions.options'])
                            ->where('formid',$formId)
                            ->orderBy('sectionid')
                            ->get()
                            ->toJson(); 

推荐阅读