2014-01-10 4 views
0

Я пытаюсь получить группу пользователей и включить сообщение в эту группу.Laravel eloquent relationship user groups posts

Это возвращает группы пользователей, но группы также должны содержать сообщения группы. пост имеет group_id, где она размещена

Мой код, чтобы заставить пользователя:

return User::find(1)->groups; 

Моя модель Пользователь:

public function groups() 
{ 
    return $this->belongsToMany('Group'); 
} 

Моя группа модель:

public function posts() 
{ 
    return $this->hasMany('Post'); 
} 
+0

Если вы должны были сделать doctrine2, например, вы не должны все это магия. Вы можете определить свои отношения в аннотации и не иметь никаких зависимостей от каких-либо родительских объектов (это означает, что для этого используется более чистый код). У вас также будет лучшее завершение кода, и вам не придется делать так много со строками. Вы также можете правильно загружать свои записи (пользователь не должен брать себя, принцип единой ответственности). Модель или сущность никогда не должны знать ничего о базе данных.http: //en.wikipedia.org/wiki/Single_responsibility_principle –

ответ

1

You необходимо указать отношение для извлечения с вашим пользователем, например:

$user = User::with('groups')->find(1); 

Также я хотел бы указать ключи в ваших отношениях для повышения производительности.

Кроме того, если вам нужно вложенным с вы можете сделать так:

$user = User::with('groups.posts')->find(1); 

Это загрузит пользователя с группами, а также должности в этой группе. Об этом говорится в ларавельных документах. Смотрите это: eager loading

+0

Это правильная идея, но вы не использовали свой пример, который оставил вопрос немного без ответа. См. Мой ответ ниже. – gstjohn

+0

На самом деле тот, который я ищу, является вложенным. – majidarif