Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 多重内连接的Laravel模型方法_Sql_Database_Laravel_Model - Fatal编程技术网

Sql 多重内连接的Laravel模型方法

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

我正在为学生计划创建一个应用程序。 在我的应用程序中,我只想获取id为1且有其时间表详细信息的学生时间表

我有三张表:学生时间表,时间表,时间表详情

这些表如下所示:

学生日程安排:id,日程安排id

日程安排详细信息:id,日程安排id

附表:id

这就是数据库查询:


$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();