提供されているアクティブ レコード クラスを使用して、ExpressionEngine の MySQL データベースから 2 つの異なる行とそのフィールド値 (forum_total_topics と forum_total_posts) を合計しています。数値を合計するために複数のバージョンのコードを試しました。と言って、MySQLクエリをリクエストに渡そうとしましたが失敗しました。
$SQL = "SELECT forum_id, sum(forum_total_topics) + sum(forum_total_posts)
FROM exp_forums"
ee()->db->select($SQL);
$query = ee->db->get('exp_forums');
echo $query;
合計をエコーし、次のエラーを取得します。
エラー番号: 1064
SQL 構文にエラーがあります。2行目のnear ''を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
SELECT (SELECT SUM(forum_total_topics) + SUM(forum_total_posts) FROM (
exp_forums
)
厄介な解決策
そのため、解決策を見つけるためにリクエスト全体を分割しようとしました。複数の配列を返し、それらを合計することで、次のコードが機能するようになりましたが、かなり面倒です。どうすれば、テーブルから 2 つの行を 1 行程度で返して合計することができますか?
$topics = ee()->db->select_sum('forum_total_topics')->get('exp_forums');
foreach($topics->result_array() as $topicrow) {
$totalTopics = $topicrow['forum_total_topics'];
}
$posts = ee()->db->select_sum('forum_total_posts')->get('exp_forums');
foreach($posts->result_array() as $postrow) {
$totalPosts = $postrow['forum_total_posts'];
}
$total = $totalTopics + $totalPosts;
どんな提案でも大歓迎です!
試した提案
といった提案を試みたのですが、
$SQL = "SELECT forum_id, SUM(forum_total_topics + forum_total_posts) AS total
FROM exp_forums
GROUP BY forum_id";
$query = ee()->db->select($SQL);
echo $query;
代わりにこのエラーが発生します。
PHP エラーが発生しました 重大度: 4096 メッセージ: クラス CI_DB_mysql_driver のオブジェクトを文字列に変換できませんでした ファイル名: libraries/Functions.php(679): eval() されたコード 行番号: 98