2014-11-04 4 views
0

У меня есть три таблицы:Laravel Eloquent принадлежит многим через

  • пользователей (номер, имя)
  • задачи (идентификатор, название)
  • task_user (идентификатор, TASK_ID, user_id, user_post_id)
  • user_posts (id, title)

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

В модели задач у меня есть:

class Task extends \Eloquent { 


    protected $guarded = []; 


    public function users() 
    { 
     return $this->belongsToMany('\User')->withPivot('user_post_id', 'hours'); 
    } 


} 

И это работает очень хорошо. Я получаю этот результат:

[0] => Array 
(
    [id] => 9 
    [created_at] => 1996-08-04 08:35:59 
    [updated_at] => 1991-07-27 16:36:47 
    [username] => xcremin 
    [email] => [email protected] 
    [remember_token] => $2y$10$WmtDoCCIA25Z/CF28KqlwOngR5vHvghD3cu0bbtPGftUV/ez2WBGe 
    [pivot] => Array 
     (
      [task_id] => 1 
      [user_id] => 9 
      [user_post_id] => 10 
     ) 

) 

Здесь вы можете увидеть сводную user_post_id поле. Вопрос в том, как я могу получить заголовок этого поля (с user_post_id = 10)?

+0

Вы бы должны создавать отношения для пользователей для 'user_posts' – Jerodev

ответ

0

Вы должны добавить отношение в вашем TaskUser классе

public function userPost() 
    { 
     return $this->belongsTo('UserPost'); 
    } 

и после того, как you''ll быть в состоянии получить имя, делая что-то вроде на ваш взгляд

@foreach($task->users as $user) 
     {{ $user->pivot->userPost->title }} 
    @foreach 
-1
$user_posts = DB::table("user_post") 
       ->whereIn("user_post_id", array($user_post_id)) 
       ->get(); 
Смежные вопросы