Laravel Eloquent为销售产品客户关系


Laravel Eloquent for sale-product-customer relationship

因此,使用Laravel 4,我有一个Sales表,它与Products表格有多对多关系,它也与Customers图表有一对多关系。

我设置我的模型如下:

class Sale extends Eloquent {
...
    public function products(){
        return $this->belongsToMany('Product');
    }
    public function customers(){
        return $this->belongsTo('Customer');
    }
}
class Product extends Eloquent {
...
    public function sales(){
        return $this->belongsToMany('Sale');
    }
}
class Customer extends Eloquent {
...
    public function sales(){
    return $this->hasMany('Sale');
    }
}

我想做的是返回所有销售的数据,包括每次销售中包含的每个产品的数据和购买它的客户的数据。

在我的SalesController中,我正在使用热切加载来查询我的数据,如下所示:

public function index()
{
    return Sale::with('products', 'customers')->get();
}

它返回一个具有Sale数据、Product数据但Customer数据为null的对象。

如何使用Eloquent(或自定义查询)实现这一点?

编辑

这是它返回的对象字符串:

[{"id":1,"customer_id":1,"date":"2013-11-21","status":1,"created_at":"0000-00-00 00:00:00","updated_at":"0000-00-00 00:00:00","products":[{"id":1,"name":"Monitor","price":50,"status":1,"created_at":"0000-00-00 00:00:00","updated_at":"0000-00-00 00:00:00","pivot":{"sale_id":1,"product_id":1,"custom_price":25,"order":1}}],"customers":null}]

尝试将customers关系更改为单数:

class Sale extends Eloquent {
...
    public function products(){
        return $this->belongsToMany('Product');
    }
    public function customer(){ // <- here
        return $this->belongsTo('Customer');
    }
}

(从评论移到回答)