在 cakephp / fpdf 中排序
sort in cakephp / fpdf
我在 CakePHP 中创建了一个小脚本,我可以在其中生成引号,但是引号项在我的 PDF 中似乎以非特定方式排序。按 ID 升序排序的最佳方法是什么?
在下面找到我的相关代码片段,它将列出我报价中的所有项目:
foreach ($items as $item) {
$itemSubTotal = $item['quantity'] * $item['unit_price'];
$discount_rate=$item['discount_rate'];
$unit_price=$item['unit_price'];
$subTotal += $itemSubTotal;
$itemDiscount=$itemSubTotal*$discount_rate/100;
$discount+=$itemDiscount;
//$itemTax = $itemSubTotal * ($item['tax_rate'] / 100);
$itemTax = ($itemSubTotal - $itemDiscount) * ($item['tax_rate'] / 100);
$tax += $itemTax;
$itemSubTotal = $itemSubTotal*((100-$discount_rate) / 100);
$itemSubTotal = number_format($itemSubTotal, 2, '.', ',');
$y+=5;
$pdf->setXY(5, $y);
$pdf->MultiCell(10, 5, $i++, 0, 'L');
$pdf->setXY(15, $y);
//$pdf->MultiCell(30, 5, $item['title'], 0, 'L');
$pdf->Cell(30, 5, $item['title'], 0, 2, 'L');
$pdf->setXY(45, $y);
//$pdf->MultiCell(80, 5, $item['details'], 0, 'L');
$pdf->Cell(30, 5, $item['details'], 0, 2, 'L');
$pdf->setXY(125, $y);
$pdf->MultiCell(20, 5, $item['quantity'], 0, 'R');
$pdf->setXY(145, $y);
$pdf->MultiCell(15, 5, number_format($unit_price, 2, '.', ','), 0, 'R');
$pdf->setXY(160, $y);
$pdf->MultiCell(20, 5, number_format($discount_rate, 2, '.', ','), 0, 'R');
$pdf->setXY(180, $y);
$pdf->MultiCell(25, 5, $itemSubTotal, 0, 'R');
}
非常感谢专家的帮助,谢谢
我还没有尝试过,但应该可以。看看 cake 3 collections,特别是 sortBy
如果您将 $items 包装在一个集合中,然后对它们进行排序,然后遍历它们,您将实现您的目标。
类似于:
use Cake\Collection\Collection;
$collection = new Collection($items);
$sortedByField = $collection->sortBy('field')
如果这不起作用,请使用其他方法,如 groupBy
我在 CakePHP 中创建了一个小脚本,我可以在其中生成引号,但是引号项在我的 PDF 中似乎以非特定方式排序。按 ID 升序排序的最佳方法是什么?
在下面找到我的相关代码片段,它将列出我报价中的所有项目:
foreach ($items as $item) {
$itemSubTotal = $item['quantity'] * $item['unit_price'];
$discount_rate=$item['discount_rate'];
$unit_price=$item['unit_price'];
$subTotal += $itemSubTotal;
$itemDiscount=$itemSubTotal*$discount_rate/100;
$discount+=$itemDiscount;
//$itemTax = $itemSubTotal * ($item['tax_rate'] / 100);
$itemTax = ($itemSubTotal - $itemDiscount) * ($item['tax_rate'] / 100);
$tax += $itemTax;
$itemSubTotal = $itemSubTotal*((100-$discount_rate) / 100);
$itemSubTotal = number_format($itemSubTotal, 2, '.', ',');
$y+=5;
$pdf->setXY(5, $y);
$pdf->MultiCell(10, 5, $i++, 0, 'L');
$pdf->setXY(15, $y);
//$pdf->MultiCell(30, 5, $item['title'], 0, 'L');
$pdf->Cell(30, 5, $item['title'], 0, 2, 'L');
$pdf->setXY(45, $y);
//$pdf->MultiCell(80, 5, $item['details'], 0, 'L');
$pdf->Cell(30, 5, $item['details'], 0, 2, 'L');
$pdf->setXY(125, $y);
$pdf->MultiCell(20, 5, $item['quantity'], 0, 'R');
$pdf->setXY(145, $y);
$pdf->MultiCell(15, 5, number_format($unit_price, 2, '.', ','), 0, 'R');
$pdf->setXY(160, $y);
$pdf->MultiCell(20, 5, number_format($discount_rate, 2, '.', ','), 0, 'R');
$pdf->setXY(180, $y);
$pdf->MultiCell(25, 5, $itemSubTotal, 0, 'R');
}
非常感谢专家的帮助,谢谢
我还没有尝试过,但应该可以。看看 cake 3 collections,特别是 sortBy
如果您将 $items 包装在一个集合中,然后对它们进行排序,然后遍历它们,您将实现您的目标。 类似于:
use Cake\Collection\Collection;
$collection = new Collection($items);
$sortedByField = $collection->sortBy('field')
如果这不起作用,请使用其他方法,如 groupBy