我有一个Web应用程序,它目前使用PHP对存储在MySQL数据库中的一些数据进行排序。我目前通过使用Laravel框架来增强应用程序,但是在将Laravel中的所有各种MySQL命令与DB
使用的命令等同起来时遇到困难。将MySQL查询翻译成Laravel
我有一个表有一些重复的author
名称,并且想要为这些重复项求和citations
列值。举例来说,我可能在表格中有两位作者,分别是John Doe
,一位是30
引用,另一位是20
。在运行当前查询后,我将有两行John Doe
,两个都与50
引用。然后,我使用GROUP BY
仅获取作者的一个实例。下面是从我的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 AS
或SET
命令:
// 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();
}
但我仍然得到一个错误
谢谢,但这不起作用。运行该功能后,表中的数据保持不变。 – jayrdi
我是否需要在那里更新'update'来更新表中的数据,或者'join'是否需要处理? – jayrdi
请再试一次。我更新了功能。如果你有任何错误,请告诉我。 – Janaki