В настоящее время у меня есть модель Eloquent, которую я попытался упростить для этого примера, и структура которой аналогична приведенной ниже.
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();
Короче говоря, могу ли я спроектировать взаимосвязь события, чтобы автоматически взять ключ 'code' ираздеть это так, чтобы я мог получить соответствующие записи?
Пример кодирования:
Студент (модель) (10-ABCD.10)
Классы (один ко многим)) (10-ABCD.10)
Событие (один на один) (10-ABCD)