Laravel 4: несколько файлов для одной таблицы
Вопрос
У меня есть приложение laravel 4, и в этом приложении мне нужно 2 раза определить модель по отношению к другой модели, но с учетом типа.
Пример
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
поэтому отношение будет car
Идентификатор в driver
В таблице дело в том, что когда я хочу получить старые драйверы только для определенной машины, она возвращает всех драйверов из обоих отношений.
Изучив ее, я обнаружил, что это одна и та же таблица, поэтому теперь я установил тип в Driver
модель, теперь я хочу, чтобы мое отношение фильтровалось по этому типу, поэтому старые драйверы будут только драйверами с типом oldDrivers, а новые драйверы будут драйверами только с установленным типом newDriver,
Как это можно сделать в Laravel?
Решение
Вы можете попробовать что-то вроде этого:
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver')->where('type', 'olddrivers');
}
public function newDrivers(){
return $this->hasMany('Driver')->where('type', 'newdrivers');
}
}
Предполагается, что у вас есть type
поле в качестве фильтра в вашей базе данных.Если я ошибаюсь насчет type
поле, то вы просто измените поле field
имя к правильному, потому что вы поняли, как можно добавить фильтр с помощью where
пункт.