首页 文章

Laravel Eloquent出售产品 - 客户关系

提问于
浏览
0

所以使用 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(或自定义查询)实现此目的?

EDIT

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

[{"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}]

1 回答

  • 0

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

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

    (从评论转到回答)

相关问题