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