Laravel 4多人同桌

时间:2014-06-03 22:13:55

标签: 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('Driver');
     }

}

因此关系将是car表中的driver ID,事情就是当我想要为某辆车获取旧驱动程序时,它会返回所有驱动程序来自两个关系。

在调查时我发现因为它是同一个表,所以现在我在Driver模型中设置了一个类型,现在我希望我的关系被这种类型过滤掉,所以oldDrivers将只是驱动程序使用oldDrivers类型和新驱动程序将是仅具有newDriver类型集的驱动程序,

如何在Laravel中完成?

1 个答案:

答案 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>