Php Laravel 4同一表格有多个

Php Laravel 4同一表格有多个,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我有一个laravel 4应用程序,在这个应用程序中,我需要定义一个与另一个模型相关的模型2次,但在类型上有区别 范例 class Car extends Eloquent{ public function oldDrivers(){ return $this->hasMany('Driver'); } public function newDrivers(){ return $this->hasMany('Drive

我有一个laravel 4应用程序,在这个应用程序中,我需要定义一个与另一个模型相关的模型2次,但在类型上有区别

范例

class Car extends Eloquent{

     public function oldDrivers(){
        return $this->hasMany('Driver');
     }

     public function newDrivers(){
        return $this->hasMany('Driver');
     }

}
因此,关系将是
driver
表中的
car
Id,问题是当我只想获取某辆车的旧驱动程序时,它将返回两个关系中的所有驱动程序

当查看它时,我发现因为它是同一个表,所以现在我在
驱动程序
模型中设置了一个类型,现在我希望我的关系按此类型过滤,因此旧驱动程序将仅为具有旧驱动程序类型的驱动程序,而新驱动程序将仅为具有新驱动程序类型集的驱动程序


如何在拉威尔做到这一点?

您可以尝试以下方法:

class Car extends Eloquent{

     public function oldDrivers(){
        return $this->hasMany('Driver')->where('type', 'olddrivers');
     }

     public function newDrivers(){
        return $this->hasMany('Driver')->where('type', 'newdrivers');
     }

 }

假设数据库中有
类型
字段作为过滤器。如果我对
类型
字段有错误,那么您只需将
字段
名称更改为正确的名称,因为您知道如何使用
where
子句添加过滤器。

您可以尝试以下操作:

class Car extends Eloquent{

     public function oldDrivers(){
        return $this->hasMany('Driver')->where('type', 'olddrivers');
     }

     public function newDrivers(){
        return $this->hasMany('Driver')->where('type', 'newdrivers');
     }

 }

假设数据库中有
类型
字段作为过滤器。如果我对
类型
字段有错误,那么您只需将
字段
名称更改为正确的名称,因为您知道如何使用
where
子句添加筛选器。

您想如何筛选?使用哪个字段,例如,
->where('fieldname','fieldvlaue')
?我将其与->where('type','oldDrivers')一起使用,但它不起作用。您的
drivers
数据库中有
类型
字段,该
类型
字段是否包含
oldDrivers
newDrivers
?可能应该是
oldDriver
oldDriver
甚至
oldDriver
。您想如何筛选?使用哪个字段,例如,
->where('fieldname','fieldvlaue')
?我将其与->where('type','oldDrivers')一起使用,但它不起作用。您的
drivers
数据库中有
类型
字段,该
类型
字段是否包含
oldDrivers
newDrivers
?可能应该是
oldDriver
oldDriver
甚至
oldDriver