2013-12-16 5 views
0

Используя Laravel, у меня возникли проблемы с доступом к моим другим столам, которых многие многие.Красноречивое много-ко-многим

enter image description here

Так в основном, я начинаю с идентификатором пользователя и хочу получить список клиентов, которые пользователь имеет.

public function customers() 
{ 
    return $this->belongsToMany('Customer', 'user_to_customer'); 
} 

Это работает, предположим, что мой идентификатор пользователя является 1:

User::find(1)->customers; 

Однако теперь я хочу сказать, для каждого из этих клиентов, список их продукции. Однако это должно быть в пределах одного и того же результата.

Я думаю, мне нужно что-то в рамках модели клиента, такие как:

public function products() 
{ 
    return $this->belongsToMany('Product', 'user_to_customer'); 
} 

Я не могу показаться, чтобы выяснить, как получить доступ к этому в одном запросе? Что-то вроде:

User::find(1)->customers->products; 

Не уверен .. любые предложения?

ответ

1

Чтобы выполнить эту задачу, просмотрите файл eager loading. Учитывая следующие модели отношений:

class User extends Eloquent { 

    public function customers() 
    { 
     return $this->has_many('Customer'); 
    } 

} 

class Customer extends Eloquent { 

    public function products() 
    { 
     return $this->has_many('Product'); 
    } 

} 

class Product extends Eloquent {} 

Следующий запрос возвращает все продукты, принадлежащие клиентам, принадлежащих к конкретному (в данном случае, во-первых) Пользователь:

не
User::with(array('customers', 'customers.products'))->first(); 
+0

Ах, спасибо, я никогда на самом деле понятые нетерпеливый загрузка до этого. Делает удовольствие, ура :) – Alias

Смежные вопросы