当前位置: 首页 > 知识库问答 >
问题:

AngularJS Laravel--通过用户ID检索用户名

景建业
2023-03-14

我正在构建一个应用程序,前端有Angular,背面有Laravel。我的问题是,如何通过在帖子表上使用他们的“author_id”来返回/检索用户的全名,而在用户表上使用“user_id”?我有一个用户表和帖子表看起来像这样:

users table
user_id | fullname | email | password | html" target="_blank">active

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

我的用户模型看起来像这样:

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

我的Post Model看起来像这样:

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上看到了这是如何工作的,在那里你可以链接方法,然后访问用户的全名,因为has很多或属性的雄辩关系,但是我似乎不知道如何在将JSON返回到Angular端时做到这一点。

提前感谢!

共有1个答案

邓令
2023-03-14

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

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

这将为您提供$user对象,您可以使用

$posts = $user->post;

也没有必要这样做:

return Response::json($posts);

当您返回集合或雄辩对象时,Laravel将自动将其序列化到JSON。如果你切换到上面的代码获取用户与他们的帖子,这将是足够的只是做:

return $user;

更新:

为了获取与相关用户的帖子集合,您可以执行以下操作:

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

您将获得一个Post对象的集合,每个对象都有一个保存相关用户的用户属性。

 类似资料:
  • 我有一个Web角前端,API网关受Cognito和Lambda保护,用于其他业务用例。登录和授权工作正常。我正在使用AWS Javascript SDK进行授权。像https://s3.amazonaws.com/solutions-reference/mobile-backend/latest/mobile-app-backend.pdf 在我的lambda中,我需要获得其他用户的信息,如名字、

  • 我有这个应用程序,它从数据库中获取用户数据,使用他们登录的用户名。一旦他们登录到检索他们的帐户信息的页面,用户名就会被传递。应用程序崩溃了,说检索信息是错误的,有人能帮忙吗? 数据库代码 要检索数据的代码

  • 我试图从Firebase中检索用户的追随者,并将他们填充到一个中,以便任何人都能看到,就像twitter和Instagram一样,当我运行该应用程序时,它会返回一个错误。 我的代码: 公共类ViewFollowersFragment扩展了片段{private static final String TAG=“ViewFollowersFragment”; 我似乎无法适应整个代码。

  • 我正在我的Twilio沙盒中构建一个whatsapp聊天机器人。我已经通过了API,但我不知道如何检索一个人的电话号码(发件人的电话号码),假设这是可能的?原因是我想限制每个用户在给定时间段内可以执行的操作数量。 我不确定这是否有帮助,但当我发送请求时,我在ngrok上获得的信息

  • 问题内容: 在程序中使用用户身份验证的代理的最佳/最简便方法是什么?我目前有这个,但是打开浏览器时我需要输入用户名和密码。 问题答案: 您可以使用Proxy Auto auth插件实现相同的功能 使用以下扩展程序下载扩展程序 https://chrome.google.com/webstore/detail/get- crx/dijpllakibenlejkbajahncialkbdkjc/rel

  • 在Cloudfront的帮助下使用自定义策略创建SignedURL,并在策略中添加客户端IP和过期日期限制。为了测试我的代码,我在java代码中硬编码了我的公共ipv4。我如何动态地做到这一点。我创建了一个程序