Laravel为morphMany集合指定条件

时间:2014-10-04 13:22:55

标签: laravel polymorphic-associations relationships

我有以下雄辩的关系

class Broker extends Eloquent{

    public function configurable(){
        return $this->morphTo();
    }
}

class ProductConfiguration extends Eloquent{

    public function productConfigurations()
    {
        return $this->morphMany('Excel\Products\ProductConfiguration','configurable');
    }
}

我可以通过这样做很容易地找到属于Broker的所有ProductConfiguration:

    $broker = Broker::find($id);
    $productConfigurations = $broker->productConfigurations;

我不清楚的是如何指定ProductConfigurations的条件,所以如果我的ProductConfiguration有一个type字段,例如:

    $broker = Broker::find($id);
    $productConfigurations = $broker->productConfigurations->where('type' = 'reg');

检查文档我无法确切地知道如何做到这一点。

2 个答案:

答案 0 :(得分:4)

好吧,一定要暂时大脑冻结或其他东西,就像这样容易:

    $broker = Broker::find($id);    
    $configurations = $broker->productConfigurations()
            ->where('type',$type)
            ->get();;

答案 1 :(得分:0)

你可以用另一种方式, 请注意

morphMany(),hasOn(),hasMany()

等关系方法都返回一个

的实例
\Illuminate\Database\Eloquent\Relations\

这意味着您可以使用此代码,

 public function productConfigurations()
{
    $relation= $this->morphMany('Excel\Products\ProductConfiguration','configurable');
    **return $relation->->where('type',$type);**

}