I have three tables, Sections,Questions and options. Each Section has many questions and each question has many options. How can I fetch data from this tables related to each other?
Section model relationship with Question model
JavaScript
x
class Section extends Model
{
use HasFactory;
protected $primaryKey='sectionid';
public function questions(){
return $this->hasMany(Question::class,'sectionid')->orderBy('order');
}
}
Question model relationship with Option model:
JavaScript
class Question extends Model
{
use HasFactory;
protected $primaryKey='questionid';
public $timestamps = true;
public function options(){
return $this->hasMany(Option::class,'questionid');
}
}
my query:
JavaScript
$data=Section::with('questions')
->where('formid',$formId)
->orderBy('sectionid')
->get()
->toJson();
I want each questions member contains options array related to it.
Advertisement
Answer
You can use nested relation in with like below.So it will fetch question options also
JavaScript
$data=Section::with(['questions','questions.options'])
->where('formid',$formId)
->orderBy('sectionid')
->get()
->toJson();