将 PHP SQL 转换为 Laravel 查询构建器 [重复]

Posted

技术标签:

【中文标题】将 PHP SQL 转换为 Laravel 查询构建器 [重复]【英文标题】:Convert PHP SQL into Laravel query builder [duplicate] 【发布时间】:2021-09-01 01:42:14 【问题描述】:

我是 Laravel 新手,使用 SQL 2 年了,但是不明白在使用复杂 SQL 时如何完全迁移到 Laravel 的查询。 我如何将以下 SQL 字符串放入 Laravel 的查询生成器中,谢谢。

$sqlQuery = "SELECT topic_id, topic_subject, cat_name, user_name, topic_date FROM topics, categories, users WHERE topic_by = user_id AND topic_cat = cat_id AND topic_cat = '$topicCat' ORDER BY topic_date DESC limit 10";

【问题讨论】:

为什么不先尝试一下,如果仍然卡住,请回到这里? laravel.com/docs/8.x/queries#running-database-queries 您的SQL 查询有效吗?也许应该是消息不明确的列名。 【参考方案1】:
$sqlQuery = "SELECT topic_id, topic_subject, cat_name, user_name, topic_date 
             FROM topics, categories, users WHERE topic_by = user_id AND  
             topic_cat = cat_id AND topic_cat = '$topicCat'
             ORDER BY topic_date DESC limit 10";

在提问之前,您需要做一些研究 不用担心我会解释的

DB::table('users')
->join('categories','users.id', '=', 'categories.user_id')
->join('topics','users.id', '=', 'topics.user_id ')
->where('topics.topic_by','users.id')
->where('topics.topic_cat','categories.id')
->where('topics.topic_cat', $topicCat)
->orderByRaw('topics.topic_date - created_at DESC')
->limit(10)
->get();

这看起来像带有类别和类别的用户表映射是带有主题的映射,因为我不知道数据库结构您可以像这样连接多个表,还可以根据您的要求添加条件。

【讨论】:

【参考方案2】:

如果您创建模型并添加到文件的顶部,您可以通过创建模型使其更简单。users::select('enter the value you want need in table here')->join('categories','users.id', '=', 'categories.user_id')->join('topics','users.id', '=', 'topics.user_id ')->where('topics.topic_by','users.id')->where('topics.topic_cat','categories.id')->where('topics.topic_cat', $topicCat)->orderByRaw('topics.topic_date - created_at DESC')->limit(10)->get();

【讨论】:

以上是关于将 PHP SQL 转换为 Laravel 查询构建器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 转换为 Laravel 5.1

如何将查询php转换为laravel框架

将原始 SQL 转换为 Laravel 查询构建器

如何将 sql 转换为查询生成器 laravel

如何将此 SQL 转换为 Laravel Query Builder 查询?

如何将复杂的 sql 查询转换为 laravel Eloquent