Laravel Eloquent для отношений продажи, продукта и клиента

Итак, используя 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();
}

Он возвращает объект с данными о продажах, данными о продукте, но данные о клиенте равны нулю.

Как я могу добиться этого с помощью 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}]

person Pablo.mtz    schedule 22.11.2013    source источник
comment
Как я вижу, вы все делаете правильно. Я думаю, проблема в другом.   -  person tharumax    schedule 22.11.2013
comment
Меня немного смущает ваш код. В модели продаж, разве не должно быть customer в единственном числе для представления отношения 1: n?   -  person Manuel Pedrera    schedule 22.11.2013
comment
Можем ли мы увидеть определения данных? Есть ли в таблице продаж поле customer_id?   -  person J.T. Grimes    schedule 22.11.2013
comment
@ J.T.Grimes: Моя таблица продаж содержит: id, customer_id, date, status У клиента есть основные данные о клиенте, а у продукта есть базовые данные о продукте.   -  person Pablo.mtz    schedule 22.11.2013
comment
@ManuelPedrera Я изменил его на единственное, и это сработало! Потрясающие!! Можете ли вы поместить свой комментарий в качестве ответа, чтобы я мог принять его как правильный ??   -  person Pablo.mtz    schedule 22.11.2013


Ответы (1)


Попробуйте изменить отношение customers на единственное число:

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

(Перенесено из комментариев в ответ)

person Manuel Pedrera    schedule 22.11.2013