Laravel检索模型与多个`with`语句

时间:2014-11-24 17:43:15

标签: php laravel

我有一个产品菜单,产品有生产者。

目前我正在这样做:

// Menu model
public function products(){
    return $this->belongsToMany('Product');
}

public static function getMenuWithProducts($month, $year){
    return self::
        where('month', '=', $month)
        ->where('year', '=', $year)
        ->with('products')
        ->get();
}

getMenuWithProducts(11, 2014)会返回包含产品的菜单。我喜欢做的事情是这样的(我已经做了一点 - 这就是为什么它不起作用):

public static function getMenuWithProducts($month, $year){
    return self::
        where('month', '=', $month)
        ->where('year', '=', $year)
        ->with('products')
        ->with('producer')
        ->get();
}

但我明白了:

BadMethodCallException 
Call to undefined method Illuminate\Database\Query\Builder::producer()

值得指出的是生产者模型

public function products(){
    return $this->belongsToMany('Product');
}

产品型号

public function producer()
{
    return $this->belongsTo('Producer');
}

我写错了吗?我猜我正在使用一个不存在的函数 - 但是有没有一种方法可以在我的链中添加其他内容以使第二个with()工作?

1 个答案:

答案 0 :(得分:2)

在with()中,products.producer不是producer