因此,使用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');
}
}
(从评论移到回答)