【问题标题】:Get Table values using Eloquent Model in Laravel5在 Laravel5 中使用 Eloquent 模型获取表值
【发布时间】:2015-06-05 02:42:04
【问题描述】:

我想使用 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 表从用户表中获取用户名。这是我尝试过的:

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();

一个标签属于多个帖子,每个帖子将属于一个所有者/用户。提前谢谢你。

【问题讨论】:

    标签: php mysql eloquent laravel-5


    【解决方案1】:

    如果您的关系正常,这样做可以:

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

    你说一个Tag属于很多帖子,那么你要在很多帖子中选择哪一个来获取用户的用户名?

    您想获取所有发布带有某个 PostTag 的帖子的用户吗?

    编辑:试试这个:

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

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

    【讨论】:

    • 是的,我想获取所有使用相同 PostTag (tag_id = 20) 创建帖子的用户。此代码只会获得第一次发布。
    • 这就像一个魅力。非常感谢。我正要从 Eloquent 转到 Query Builder。我从前两天开始尝试这个。顺便说一句,你用什么 - Eloquent 或 Query Builder?
    • @Chopra 我使用 Eloquent,但我从来不需要做一些非常复杂的事情,所以它可以工作并变成漂亮、易于理解和简短的代码。但我可以想到几个 Eloquent 查询无法解决的实际行业规模的应用程序。
    • 我要开始一个新项目,所以正在考虑 Eloquent。我想,我应该只从一开始就转向查询生成器。非常感谢。赞赏!!
    • 记住你可以同时使用两者,所以如果你遇到一个复杂的查询,你可以使用 DB 门面手动编写你自己的查询,其他的都使用 Eloquent。
    猜你喜欢
    • 2016-06-03
    • 2020-08-04
    • 2015-08-03
    • 1970-01-01
    • 2020-01-06
    • 2014-12-19
    • 2023-04-03
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多