我有一个laravel 4应用程序,在这个应用程序中,我需要定义一个与另一个模型相关的模型2次但是在类型上有区别。
实施例
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
因此关系将是car
表中的driver
ID,事情就是当我想要为某辆车获取旧驱动程序时,它会返回所有驱动程序来自两个关系。
在调查时我发现因为它是同一个表,所以现在我在Driver
模型中设置了一个类型,现在我希望我的关系被这种类型过滤掉,所以oldDrivers将只是驱动程序使用oldDrivers类型和新驱动程序将是仅具有newDriver类型集的驱动程序,
如何在Laravel中完成?
答案 0 :(得分:4)
您可以尝试这样的事情:
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
子句添加过滤器。< / p>