Laravel 4对同一个表有多个


Laravel 4 multiple hasmany for same table

我有一个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子句添加过滤器。