SQL和php数组()。在任意插入顺序/更新后保证查询顺序的优雅方法

时间:2018-04-03 23:00:22

标签: php mysql sql

我从发票中提取一系列订单项:

private function lineItemsFromInvoice($xeroInvoice) : array
{
    $lineItems = array();
    foreach($xeroInvoice[XeroKeys::_XERO_INVOICE_KEY_LINE_ITEMS] as $value) {
        array_push($lineItems, $value);
    }
    return $lineItems;
}

在此之后,它们将通过以下方式插入数据库:

foreach($this->lineItems() as $invoiceLineItem) {
    ...some SQL INSERT STATEMENT
}

我需要能够查询订单项并按照插入顺序保留它们。此外,可以更新发票本身,并在数组中的任意位置插入行项目。这个项目在查询中排序的顺序需要反映这个

我可以使用时间戳ORDER BY并确保每次运行INSERT语句时每个订单项都会更新。

我还可以在$index = 0函数中使用$index++lineItemsFromInvoice(),并在数组中添加Key => Value对,并将其作为每个{{1}的一部分插入但这似乎很混乱。我不知道LineItem与:

array()

这些解决方案是典型的还是可行的?在生产环境中通常会看到什么?

1 个答案:

答案 0 :(得分:2)

根据Matt S上面给出的建议,这是我将要实施的实施。

private function lineItemsFromInvoice($xeroInvoice) : array
{
    $lineItems = array();
    $index = 0;
    foreach($xeroInvoice[XeroKeys::_XERO_INVOICE_KEY_LINE_ITEMS] as $value) {
        $value["index"] = $index;
        array_push($lineItems, $value);
        $index++;
    }
    return $lineItems;
}

现在的问题是,我可以保证php array()会在最后添加["index"]个密钥吗?