私は codeigniter に移行し、以前は SQL クエリが機能していましたが、今ではフレームワーク上では動作しません。私は時間を丸めようとしていますが、ここに私のクエリがあります:
SELECT
DATE_FORMAT(wo.dateCreated,'%m/%d/%Y @ %h:%i %p') AS dateCreated
, wo.id
, sr.id AS srid
, ROUND((TIME_TO_SEC(sr.endtime) -
TIME_TO_SEC(sr.starttime)) / 3600.0 , 2 ) AS totalHours
, ROUND((TIME_TO_SEC(sr.endtime) -
TIME_TO_SEC(sr.starttime)) / 3600.0 , 2 ) - sr.deduction AS deductHours
, l.name AS locationName
, l.address
, l.zip
FROM company AS c
それほど長くならないようにクエリを短くしました。基本的には、codeigniter を使用して ROUND 部分を適切に実行する方法を知る必要があるだけです。どんな助けでも大歓迎です!
編集: 私はこれを与えるあなたの提案に従って変更しました:
public function get_sr($id) {
$this->db->select('
sr.id
,sr.woid
,sr.description
,sr.techId
,sr.startTime
,sr.endTime
,ROUND((TIME_TO_SEC(sr.endtime) - TIME_TO_SEC(sr.starttime)) / 3600.0 , 2 ) AS totalHours
,u.first_name
,u.last_name
,rt.value AS rate
,wo.tid');
$this->db->from('service_report sr');
$this->db->join('work_orders wo','wo.id = sr.woid','left');
$this->db->join('enum_rate_type rt','rt.id = sr.rateType','left');
$this->db->join('users u','u.id = sr.techId','left');
$this->db->where('sr.woid', $id);
$query = $this->db->get();
return $query->result_array();
しかし、今ではそれを呼び出すとエラーが発生します: 致命的なエラー: 非オブジェクトのメンバー関数 result_array() への呼び出し
ROUND 行がなくても問題なく表示されます。
ここに私の見解があります:
<?php
$total = 0;
foreach ($srInfo as $row):
$total += $amount = $row['rate'] * $row['deductHours'];
?>
<tbody>
<!-- Cart item -->
<tr>
<td class="center"><?php echo $row['id']; ?></td>
<td>
<h5><?php echo $row['description']; ?></h5>
</td>
<td class="center"><?php echo $row['first_name']; ?> <?php echo $row['last_name']; ?></td>
<td class="center"><?php echo $row['deductHours']; ?></td>
<td class="center"><?php echo "$" . number_format($total, 2); ?></td>
</tr><!-- // Cart item END -->
<?php endforeach; ?>
</tbody>