【问题标题】:Laravel Select Query and PaginationLaravel 选择查询和分页
【发布时间】:2019-11-19 23:17:59
【问题描述】:

我一直在尝试对我的 laravel 项目执行基于多表的查询,并且我完成了一段时间。现在,我意识到我必须添加一个分页器以获得更好的用户体验。

问题是我想转换我的 SELECT Query 以便我可以使用 paginate 方法。查询如下所示:

SELECT m.created_at as msg_created_at, m.id, m.on_thread_id, u.name, u.user_title, u.user_pic, u.created_at, u.msg_count, m.content, t.thread FROM messages m, users u, threads t WHERE t.id = '.$id.' AND m.thread_id = t.id AND m.creator = u.id ORDER BY m.on_thread_id

$id是一个基于用户引用的动态值变量。

我需要 Laravel 大师的帮助,谢谢。

【问题讨论】:

  • PHP 代码中的查询是什么样的?你有没有尝试过?
  • 似乎你必须设置关系并使用with,如果你想要laravel-way

标签: php laravel eloquent pagination


【解决方案1】:

你可以这样尝试:

$res = DB::table('messages')
    ->join('users', 'users.id', '=', 'messages.creator')
    ->join('threads', 'threads.id', '=', 'messages.thread_id')
    ->where('threads.id', $id)
    ->orderBy('messages.on_thread_id')
    ->get();

【讨论】:

    【解决方案2】:

    感谢罗曼的回答,对我帮助很大。 我最终做了什么:

    DB::table('messages')
                ->join('users', 'users.id', '=', 'messages.creator')
                ->join('threads', 'threads.id', '=', 'messages.thread_id')
                ->where('threads.id', $id)
                ->select('messages.created_at as msg_created_at','messages.id','messages.on_thread_id','users.name','users.user_title','users.user_pic','users.created_at as reg_date','users.msg_count','messages.content','threads.thread')
                ->orderBy('messages.on_thread_id')
                ->paginate(25);
    

    我转换了查询,以便我可以加入多个表并获取我需要的列,并在它们上放置一个别名(因为它在从视图中调用它们时给我的 timestamps() 带来了问题)。

    希望这个答案可以帮助更多像我这样的人:D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2020-12-31
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多