[英]How to join three tables in laravel eloquent
我想加入三个表:sections table: sectionid text formid
问题表:questionid question formid sectionid
选项表:optionid option questionid
我想获取 formid=x 的所有部分(例如)以及与 sectionid 相关的问题和与 questionid 相关的选项。
$data=Section::with('questions','options')
->where('formId',$formId)
->orderBy('sectionid')
->get()
->toJson();
我在 model 部分中创建了两个关系。 One to joining Section model to Question model and other one to join Section Model to Option model through Question model.
class Section extends Model
{
use HasFactory;
protected $primaryKey='sectionid';
public function options(){
return $this->hasManyThrough(Option::class,Question::class,'sectionid','questionid');
}
public function questions(){
return $this->hasMany(Question::class,'sectionid');
}
}
我的 Controller:
$data=Section::with('questions','options')
->where('formId',$formId)
->orderBy('sectionid')
->get()
->toJson();
它工作正常:)
Laravel 文档: https://laravel.com/docs/8.x/queries#joins
$data = Section::where('formid', x)
->join('questions', 'sections.sectionid', '=', 'questions.sectionid')
->join('options', 'options.optionid', '=', 'questions.optionid')
->select('sections.*', 'questions.question as question', 'options.option as option')
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.