Laravel 拉威尔滤波器

Laravel 拉威尔滤波器,laravel,Laravel,在我看来,这似乎很容易,但我想我做这件事已经太久了 结构: Student |_Bursaries |_Enrolments |_Courses Academic Institution |_Campus 学生也会被分配到一个校园 我试图达到的目的是找到一个有一个名为“Pearson Institute”的学术机构的入学人数,这样我就可以在找到的入学人数下创建一门课程。如果找不到这样一个学术机构的注册,那么我会创建它 $student = Student:

在我看来,这似乎很容易,但我想我做这件事已经太久了

结构:

Student
|_Bursaries
  |_Enrolments
    |_Courses

Academic Institution
|_Campus
学生也会被分配到一个校园

我试图达到的目的是找到一个有一个名为“Pearson Institute”的学术机构的入学人数,这样我就可以在找到的入学人数下创建一门课程。如果找不到这样一个学术机构的注册,那么我会创建它

            $student = Student::findOrFail(1); // select the student I want to work with
            $bursary = $student->bursaries()->first(); // select the first bursary
            $bursary->enrolments()->whereHas('academic_institution', function (Builder $query) {
                $query->where('academic_institution','=','Pearson Institute');
            })->get(); //select the academic institution - here is where its going wrong.
我想我是误会了/误用了where

入学模式:

class StudentBursaryEnrolment extends Model
{
protected $fillable = [
    'academic_institution_campus_id',
    'student_number'
];

public function student () {
    return $this->belongsTo('App\Student');
}

public function academic_institution () {
    return $this->hasOneThrough('App\AcademicInstitution','App\AcademicInstitutionCampus');
}

public function academic_institution_campus () {
    return $this->belongsTo('App\AcademicInstitutionCampus');
}

public function courses() {
    return $this->hasMany('App\StudentBursaryEnrolmentCourse');
}
}

这个怎么样,;在查询入学情况之前查找院校:

$institution = AcademicInstitution::where('academic_institution', 'Pearson Institute')
    ->first();

if (!is_null($institution)) {
    $enrolments = $bursary->enrolments()
        ->where('academic_institution', $institution->id)
        ->get();
}
另一种方法可能是->连接,但上面的方法不太复杂

附带说明:我发现您的数据布局不清楚,建议您重新设计。例如,学生是否真的必须申请助学金?而StudentBursaryEnrolmentCourse觉得它根本不应该是一个模型,而是一个数据透视表

首先是这样的:

这个学生有很多助学金

这个学生有很多学生

学生报名

这个学生有许多课程

学院有很多学生

入学资格属于学院


哦,你好,你又和我一样了question@neel-bhanushali如果这是重复的,请将其标记为重复。@JorisJ1它不是重复的。问题是不同的,项目是相同的。嗨,Joris,谢谢你的回复,但这不起作用,因为你正在注册中搜索家长id。“校园id”与注册一起存储,而不是“学术机构id”。这就是我面临的困难。我明白了。请出示您的表格布局,包括列,好吗?这将帮助我重现您的情况。谢谢Joris,我最终使用了一些IF语句和带有连接的直接DB:table查询来“直接”获取所需的数据。