使用Laravel5中的Eloquent Model获取Table值

时间:2015-03-31 16:48:16

标签: php mysql eloquent laravel-5

我想使用Eloquent模型使用Post_Tag表从post_id中找到用户名。这是表格。

用户表

user_id(pk)
username

发布表

post_id(pk)
user_id(fk)

Post_Tag表

post_id(fk)
Tag_id(fk)

如何使用Post_Tag表从User表中获取用户名。这是我尝试过的:

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 个答案:

答案 0 :(得分:1)

如果你的关系正常,那就可以了:

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

你说一个标签属于很多帖子,你如何选择你想要获得用户用户名的帖子中的哪一个?

您是否希望获得所有帖子中包含PostTag帖子的用户?

编辑:试试这个:

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

在artisan tinker或dd中运行此结果,以便您可以看到返回的内容,我认为这可以解决您的问题。请注意,这可能会返回大量数据,您可以使用take代替get来限制结果。