php - 将 MySQL 查询转换为 Laravel

标签 php mysql laravel-5 database-schema

我有一个 Web 应用程序,目前使用 PHP 对存储在 MySQL 数据库中的一些数据进行排序。我目前正在通过使用 Laravel 框架来增强应用程序,但是我无法将所有各种 MySQL 命令等同于 Laravel 中 DB 使用的命令。

我有一个表,其中有一些重复的 author 姓名,我想对这些重复的 citations 列值求和。因此,例如,我可能在名为 John Doe 的表中有两位作者,一位的引用次数为 30,另一位的引用次数为 20。运行当前查询后,我会得到两行 John Doe,均有 50 引用。然后,我使用 GROUP BY 只获取作者的一个实例。这是来 self 的 PHP 代码的当前查询:

// sum citations for duplicate authors
mysqli_query($connect, "UPDATE searchresponse AS r JOIN(SELECT author, SUM(citations) AS citations, COUNT(author) AS n FROM searchresponse GROUP BY author) AS grp ON grp.author = r.author SET r.citations = grp.citations");

现在我一直在尝试以下方法,但我不确定如何在 Laravel 中复制像 ASSET 这样的命令:

// select relevant data
$sumData = DB::table('searchresponse')
    -> (something);
// insert selected data into table
foreach ($sumData as $value) {
    DB::table('searchresponse')->insert(
        [
            'author'   => $value->author,
            'citations => $value->citations
        ]
    );
}

基本上我需要知道在 Laravel 中你如何引用一个表 AS 一些东西所以我可以将它与它自己进行比较,就像在我的原始方法中它引用 searchresponse AS r .或者,事实上,只是如何在 Laravel 中复制我原来的 PHP MySQL 查询。

编辑

处理它,这似乎更像是我需要做的事情:

// sum citations for duplicate authors
function sumCites($data) {
    $sumAll = DB::table('searchresponse')
        ->join('searchresponse', 'searchresponse.citations', '=', 'searchresponse.citations')
        ->where('searchresponse.author', '=', 'searchresponse.author')
        ->get();
}

但是还是报错

最佳答案

尝试以下方式获取数据:

function sumCites($data){
     // Update first
     \DB::update('UPDATE searchresponse AS r 
     JOIN(
        SELECT author, SUM(citations) AS citations, COUNT(author) AS n FROM    searchresponse GROUP BY author
       ) grp 
       ON grp.author = r.author 
       SET r.citations = grp.citations');

     //Now fetch all data from that table
     $sumAll = \DB::table('searchresponse')->get();
     return $sumAll;
}

如果你想更新表,你可以直接使用你的sql

关于php - 将 MySQL 查询转换为 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32014079/

相关文章:

mysql - 某些 SQL Case 语句设置为 NULL

php - 为什么在 Laravel 5.x 中弃用了 Form 和 HTML 助手?

javascript - 通过 ajax 加载的输入不会出现在请求正文中

php - 从长远来看,创建 SQL 表以便轻松查询的最佳方法是什么?

javascript - 如何在没有提交按钮的情况下提交 “file” 输入,然后在同一脚本中执行 mysql 更新

php - 检查表数组值是否在范围内

php - 使用 PHP 将 JSON 数组发送到 Android Volley

mysql - SQL,HAVING子句解释

mysql - 从 table1 检索数据但在 table2 中进行比较 - Laravel Eloquent

php - mysql 列中的最低自由值