2015-03-31 4 views
1

Я хочу найти имя пользователя из post_id, используя таблицу Post_Tag, используя модель Eloquent. Вот таблицы.Получить значения таблиц с использованием Eloquent Model в Laravel5

Таблица Пользователь

user_id(pk) 
username 

сообщение Таблица

post_id(pk) 
user_id(fk) 

Post_Tag Таблица

post_id(fk) 
Tag_id(fk) 

Как я могу извлечь имя пользователя из таблицы пользователя с помощью Post_Tag таблицы. Вот то, что я пробовал:

class Post extends Eloquent { 

     public function user() { 
     return $this->belongsTo('App\User'); 
     } 
} 

class PostTag extends Eloquent { 

    public function post() { 
      return $this->hasMany('App\Post'); 
    } 
} 


$posts = PostTag::with('post')->where('tag_id','=','20')->get(); 

Один тег принадлежит несколько сообщений и каждый пост будет принадлежать к владельцу/пользователю. Заранее спасибо.

ответ

1

Если ваши отношения работают это будет делать:

PostTag::find(20)->post()->first() 
       ->user()->first()->username; 

Вы говорите, что один тег принадлежит многим постам, как вы выбираете, какой из многих сообщений вы хотите, чтобы получить имя пользователя?

Вы хотите получить всех пользователей, у кого есть сообщение с PostTag?

Edit: Попробуйте это:

PostTag::find(20)->with(['post', 'post.user'])->get(); 

Выполнить это в ремесленном повозиться или dd результатом, так что вы можете увидеть, что возвращается, я думаю, что это решит вашу проблему. Просто отметьте, что это может вернуть много данных, вы можете использовать take вместо get, чтобы ограничить результаты.

+0

Да, я хочу получить всех пользователей, которые создали сообщения с тем же PostTag (tag_id = 20). Этот код получит только первый пост. – Chopra

+0

@Chopra Я отредактировал свой ответ, проверьте, работает ли он. – hfingler

+0

Это работает как шарм. Большое спасибо. Я собирался переехать в Query Builder из Eloquent. Я пробовал это последние два дня. Кстати, что вы используете - Красноречивый или Query Builder? – Chopra

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