Sql 多重内连接的Laravel模型方法
我正在为学生计划创建一个应用程序。 在我的应用程序中,我只想获取id为1且有其时间表详细信息的学生时间表 我有三张表:学生时间表,时间表,时间表详情 这些表如下所示: 学生日程安排:id,日程安排id 日程安排详细信息:id,日程安排id 附表:id 这就是数据库查询:Sql 多重内连接的Laravel模型方法,sql,database,laravel,model,Sql,Database,Laravel,Model,我正在为学生计划创建一个应用程序。 在我的应用程序中,我只想获取id为1且有其时间表详细信息的学生时间表 我有三张表:学生时间表,时间表,时间表详情 这些表如下所示: 学生日程安排:id,日程安排id 日程安排详细信息:id,日程安排id 附表:id 这就是数据库查询: $schedule = DB::table('Student_Schedules') ::join('schedules', 'Student_Schedules.schedule_id', '=', 'sch
$schedule = DB::table('Student_Schedules')
::join('schedules', 'Student_Schedules.schedule_id', '=', 'schedules.id')
->join('schedule_details', 'schedules.id', '=', 'schedule_details.schedule_id')
->where('Student_Schedules.id', '=', 1)
->get('Student_Schedules.*');
因为我不擅长拉威尔雄辩的人际关系。是否可以使用具有多个内部联接的给定查询的模型方法。
非常感谢您的帮助:>好吧,我已经阅读了您的帖子。使用laravel,雄辩的关系非常重要,这是laravel的另一个功能,因此您可以使用数据库模型来创建每个表或模块。答案如下: 迁移数据库表。制作每个模型时,可以给出它们之间的关系。 例如: 上面的示例意味着您不需要通过使用Student_Schedules模型对象结果上的函数Schedules连接2个表并使用schedule info 2.然后您可以使用他们的关系模型对象
$schedule = Student_Schedules ::find(1)->Schedules;
更多信息,让我们联系。谢谢……在拉维尔语中,使用雄辩的关系在性能和准确性方面总是很好的。您还必须使用如下关系- 你有三张桌子- 时间表 学生时间表-带时间表的外键 计划详细信息-带计划的外键 我假设您有一个学生表,其id放在学生时间表表中- 我们会有像这样雄辩的关系 1进度模型
public function studentSchedules(){
return $this->hasMany(StudentSchedule::class,'schedule_id');
}
public function scheduleDetail(){
return $this->hasMany(ScheduleDetails::class,'schedule_id');
}
现在,您可以在逻辑中使用这些关系
$schedules = Schedule::all(); /** conditional data must be used always */
foreach($schedules as $key => $schedule){
$schedules[$key]->details = $schedule->scheduleDetail;
$schedules[$key]->studentDetail = $schedule->studentSchedules;
}
等等,你也可以使用其他关系。Laravel关系具有更优化的查询,因此我们必须首先选择Laravel雄辩的关系
我希望它能帮助您您的问题的答案是肯定的,可以使用模型方法。你的桌子需要三个有说服力的模型。 这是时间表,学生时间表,时间表细节。您可以使用以下命令创建它:
php artisan make:model Schedule
php artisan make:model StudentSchedule
php artisan make:model ScheduleDetail
现在在Schedule.php文件中,创建它与StudentSchedule、ScheduleDetail模型的关系
public function studentSchedule()
{
return $this->hasMany(StudentSchedule::class, 'schedule_id');
}
public function scheduleDetail()
{
return $this->hasOne(ScheduleDetail::class, 'schedule_id');
}
现在,在StudentSchedule.php文件中,创建其与计划模型的关系:
public function schedule()
{
return $this->belongsTo(Schedule::class, 'schedule_id');
}
然后将查询替换为:
StudentSchedule::with(['schedule' => function ($query) {
$query->with('scheduleDetail');
}])->where('id',1)->first();
以下是为了更好地理解拉威尔雄辩的模型关系
希望它能帮助你
StudentSchedule::with(['schedule' => function ($query) {
$query->with('scheduleDetail');
}])->where('id',1)->first();