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

列出资源时检查关系

盛超
2023-03-14

有以下三个表格:

  • 用户id
  • 名字
  • 姓氏
  • 等等
  • 邮政id
  • post_id
  • user_id

post-user关系表示用户正在跟踪帖子。

列出职位的最简单方法是:

$posts= Posts::all();

foreach ($posts as $post)
{
    var_dump($post->title);
}

但是,当列出帖子时,我也想询问当前用户(比如user_id=5)是否在关注每一篇帖子。

所以对于每个帖子,我都会有post_idtitle,...,is_following[0或1]

我可以用简单的SQL做到这一点,但是这能用雄辩的方式做到吗?

共有2个答案

濮阳
2023-03-14

也许可以尝试加载用户,然后针对每一篇文章,在跟随该文章的用户中循环查找用户id。

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

foreach($posts as $post) {
    echo $post->title;
    foreach($post->users as $user) {
        if($user->id == $user_id) {
            echo 'User with id of '.$user_id.' is following this post.';
            break;
        }
    }
}
穆景辉
2023-03-14

假设您使用hasMany('Post')User模型上定义了Post/User关系,您可以使用contains()检查当前Post是否在用户的后续帖子中:

$followed_posts = $current_user->posts();

if ($followed_posts->contains($current_post->id))
{
    // This Post is being followed by the User
    // .... Do something .... :)
}
 类似资料:
  • 按框架、域、类型或其他标准来组织管理资源。 TL;DR 使用 Application(应用)面板的Frames(框架)窗格按frame(框架)组织管理资源。 您还可以在Sources(源文件)面板中,通过禁用group by folder(按文件夹分组)选项,来按frame(框架)查看资源。 要按域和文件夹查看资源,请使用Sources(源文件)面板。 在Network(网络)面板中可以按照名称或

  • 我正在为面向对象编程的秋季考试做准备,其中一种任务是提供代码输出,这通常包括一些异常处理问题。 现在我的问题是什么时候用资源尝试关闭它的资源,因为我的输出严格依赖于实现AutoCloseable的类的输出。 在提供的代码中,我不明白为什么“close 1”输出在“close 40”之前,或者为什么对象A(40)在这个块的末尾被关闭。是因为A(50)和A(40)是同一类型的吗? 我的主要问题是,Au

  • 资源分配特点 coolie 是前端工程的构建方案,以页面(html)为导向,JS 和 CSS 都是 HTML 的描述文件。 <!--app.html--> <!doctype html> <link href="style.css" rel="stylesheet"> <script src="app.js"></script> 如上,style.css是app.html的样式修饰,app.

  • 随着 Jekyll 被更广泛的使用,一系列的教程、框架、扩展、示例和其他各种有用的资源也相继出现。下面列出了一些最流行的 Jekyll 资源合辑的链接。 Jekyll 提示和技巧,以及示例 与 GitHub Pages 集成的技巧 重用代码并保持文档同步至最新的示例。 使用 Simple Form 来集成一个简单的联系表单 JekyllBootstrap.com 提供了详细的解释,例子和辅助代码让

  • Windows 命令行界面 cmder 的官方网站 宁皓网《命令行》视频课程 宁皓网《我的工作流程:Windows》视频课程里的命令行 宁皓网《我的工作流程》视频课程里的终端

  • Atlassian:Learn Git Git 远程服务 Github,国外服务商,公开仓库免费,私有仓库收费 Coding.net,国内服务商,提供免费的公开与私有仓库 阿里云 Git,国内服务商,提供免费的公开与私有仓库 Atlassian,国外服务商,提供免费的公开与私有仓库