【问题标题】:AngularJS + Laravel -- Eloquent retrieving username by user IDAngularJS + Laravel -- Eloquent 通过用户 ID 检索用户名
【发布时间】:2015-10-24 21:55:52
【问题描述】:

我正在构建一个前端有 Angular,后端有 Laravel 的应用程序。我的问题是,如何通过使用帖子表上的“author_id”与用户表上的“user_id”来返回/检索用户的全名?我有一个用户表和一个帖子表,如下所示:

users table
user_id | fullname | email | password | active

posts table
post_id | author_id (FK-user_id on users table) | text | timestamps

我的用户模型如下所示:

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

我的帖子模型如下所示:

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

假设我的路由是正确的(如果需要,我可以提供),我的 PostController 有这个检索帖子的方法:

public function getAllPostsByUserID($user_id)
{
    $posts = Post::where("user_id", "=", $user_id)
                            ->get();

    if($posts) {
        return Response::json($posts);
    } else {
        return Response::json(array('flash'=>'No posts by this user.'),500);
    }
}

现在,我正在检索一个包含所有用户帖子的 JSON,但由于帖子表使用 author_id,我无法显示用户名,只能显示他的 ID。我已经看到这在 Laravel/Blade 上是如何工作的,您可以在其中链接方法,然后访问用户的全名,因为 hasMany 或 belongsTo 的 Eloquent 关系,但我似乎无法弄清楚如何在返回 JSON 时执行此操作角的一面。

提前致谢!

【问题讨论】:

  • 逻辑上用刀片和角度其实没什么区别,顺便处理了吗?

标签: json angularjs laravel orm eloquent


【解决方案1】:

为了检索用户的所有帖子,您可以执行以下操作:

$user = User::with('post')->whereUserId($user_id)->first();

这将为您提供 $user 对象,您将能够访问用户帖子的集合

$posts = $user->post;

这也不是必须的:

return Response::json($posts);

当你返回一个 Collection 或 Eloquent 对象时,Laravel 会自动将其序列化为 JSON。如果你切换到上面的代码来获取用户的帖子,就足够了:

return $user;

更新:

为了获取相关用户的帖子集合,您可以这样做:

$posts = Post::with('user')->get();

您将获得一组 Post 对象,每个对象都有一个 user 属性来保存相关用户。

【讨论】:

  • 检索用户的所有帖子并不是我想要的,我试图返回表中的所有帖子并显示它们,但因为我得到了一个 JSON post,我无法检索用户的姓名,只能检索他们的 ID,这在显示帖子时是无用的。感谢返回Response::json()上的指针,不知道那个!
  • 好吧,您的方法称为 getAllPostsByUserID($user_id) 因此它正在检索给定用户的所有帖子:) 如果您想获取所有帖子和相关用户,请查看更新后的答案(在一会儿)
  • 哈哈对不起!我完全忘记将其包含在问题中。非常感谢!
  • 嗯,有趣,我现在就试试这个。这将返回相关用户,但我将如何从 users 表中获取他们的名字。另外,你能简单解释一下 with() 方法的参数是什么吗?谢谢!
  • $post->user->name 将为您提供相关用户的名称。 with() 将应与模型一起加载的关系列表作为参数 - 在此处查看有关急切加载的更多信息:laravel.com/docs/5.1/eloquent-relationships#eager-loading
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-08-04
  • 2015-03-30
  • 2012-01-06
  • 2013-12-11
相关资源
最近更新 更多