我有一个laravel 4应用程序,在这个应用程序中,我需要定义一个模型与另一个模型的关系2次,但在类型上有区别。
例子class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
因此关系将是driver
表中的car
Id,问题是当我只想获得某辆车的旧驾驶员时,它将返回两个关系中的所有驾驶员。
当查看它时,我发现因为它是相同的表,所以现在我在Driver
模型中设置了一个类型,现在我希望我的关系通过此类型过滤,因此oldDrivers将仅具有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
子句添加过滤器。