Php 使用雄辩的语言建立人际关系

Php 使用雄辩的语言建立人际关系,php,laravel-5.2,Php,Laravel 5.2,我在Laravel 5中使用了雄辩,对表之间的关系有点困惑。这些是软件的现有表,不能更改 下面的表格显示了一个学生的历史细节。所有表都创建了模型类 student ------- student_id (PK) first_name last_name class ----- class_id (PK) name section year //2012, 2013 etc student_id (FK) result ------ result_id (PK) class_id (FK

我在Laravel 5中使用了雄辩,对表之间的关系有点困惑。这些是软件的现有表,不能更改

下面的表格显示了一个学生的历史细节。所有表都创建了模型类

student
-------
student_id (PK)
first_name
last_name

class
-----
class_id (PK)
name
section
year    //2012, 2013 etc
student_id (FK)

result
------
result_id (PK)
class_id (FK)
month       // jan, feb etc
status      //pass or fail
以下是各表的详细信息

  • 学生在班级里学习一年
  • 该年的每个班级将有10个成绩(一年中每个月1个成绩)
  • 每个结果将包含一个月内测试的状态(通过或失败)
我想根据以下示例访问对象。您可以指导在模型类中设置关系吗

student->class(2013)->result(jan)
result(feb)->class(2016)->student

首先,您应该定义模型之间的关系:

Result.php模型

php模型

Student.php模型

然后,您可以使用一些查询。对于您的第一个示例
学生->班级(2013)->结果(一月)

此外,如果您需要按年份搜索类,按月份搜索结果,您可以在模型中轻松添加以下方法:

Student.php模型

php模型

因此,前面的示例将变成:

$results = Student::find($student_id)->classesByYear('2013')->resultsByMonth('jan');


编辑:您的表使用自定义标识符,因此必须实现
protected$primaryKey='custom_id'在每个型号上。

检查laravel文档和laravel播客。那里有很多好信息。
public function results(){
    return $this->hasMany('Result::class');
}

public function student(){
    return $this->belongsTo('Student::class');
}
public function classes(){
    return $this->hasMany('Class::class');
}
$results = Student::find($student_id)->classes()->where('year', '2013')->results()->where('month', 'jan')->get();
public function classesByYear($year){
    return $this->classes()->where('year', $year)->get();
}
public function resultsByMonth($month){
    return $this->results()->where('month', $month)->get();
}
$results = Student::find($student_id)->classesByYear('2013')->resultsByMonth('jan');