我有一個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