我目前有一个雄辩的模型,我已尝试对此示例进行简化,并且具有与以下类似的结构。
class Student extends Model {
public function classes()
{
return $this->hasMany('App\Classes', 'class_code','code');
}
public function events()
{
return $this->hasOne('App\Events', 'event_code', 'code');
}
}
每个学生都有分配的代码。因此,可以通过此代码以一对多/一对一的关系将学生与班级或事件进行匹配。问题是事件的关系。代码略有不同。
在课堂上,代码将为11-ABCD.00
对于事件,代码为:11-ABCD
事件代码中缺少小数点,但其他代码相同。小数点仅允许更精细的细分。对于关系而言,这并不重要,也可能并不总是存在,即学生可能没有与之相关的课程或事件。
我可以像这样手动检索事件记录:
class Student extends Model {
public function events($code)
{
$code = explode('.', $code);
if(count($code) > 0)
{
$code = $code[0];
}
return Event::where('code', $code)->first();
}
}
但是,当我想检索整个集合时,这并不是雄辩的真正精神。
$results = Student::with('events')->first();
简而言之,我可以设计事件的关系以自动获取键“代码”并剥离它,以便我检索相关记录吗?
示例代码:
学生(模型)(10-ABCD.10)
类(一对多)(10-ABCD.10)
事件(一对一)(10-ABCD)