因此,使用 Laravel 4 ,我有一个销售表,与产品表有很多关系,而且还有与客户表格的一对多关系。
我按如下方式设置模型:
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数据为空。
如何使用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}]
答案 0 :(得分:0)
尝试将customers
关系更改为单数:
class Sale extends Eloquent {
...
public function products(){
return $this->belongsToMany('Product');
}
public function customer(){ // <- here
return $this->belongsTo('Customer');
}
}
(从评论转到回答)