Php 使用雄辩的语言建立人际关系
我在Laravel 5中使用了雄辩,对表之间的关系有点困惑。这些是软件的现有表,不能更改 下面的表格显示了一个学生的历史细节。所有表都创建了模型类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
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');