我正在使用Prestashop 1.7 我添加了一个代码,该代码将生成与订单ID相匹配的Order引用,效果很好,但问题是,如果我有多个订单,两个订单将被分配相同的订单引用。 例如: 如果订单ID为118,则订单参考将为000000118,但是如果有2个订单,则订单ID将被分配为119和120,但在订单参考中,它们将被视为000000119 0000000119
这是我的代码:
public static function generateReference()
{
$last_id = Db::getInstance()->getValue('
SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
}
}
答案 0 :(得分:0)
要强制引用与id相同,您可以将add函数覆盖为类似以下内容,而不是覆盖generateReference:
nullable
如果您不想使用替代,则可以使用钩接到private readonly HttpClient _httpClient
public MyClass(HttpClient httpClient)
{
_httpClient = httpClient;
}
public Task<T> GetMyData<T>()
{
try
{
var response = _httpClient.GetStringAsycn("https://someApiUrl");
// This is where I'm a bit stuck
if(string.IsNullOrEmpty(response))
return null; // <<-- Can't return NULL!
var data = JsonConvert.DeserializeObject<T>(response);
return data;
}
catch(Exception e)
{
throw new Exception(e.Message);
}
}
的模块,该模块由objectmodel调用:
public function add($autodate = true, $null_values = true)
{
$res = parent::add($autodate, $null_values);
if($res){
$this->reference = str_pad($this->id, 9, '0', STR_PAD_LEFT);
$this->update();
}
return $res;
}
答案 1 :(得分:0)
轻松解决方案覆盖问题:
<?php
class Order extends OrderCore
{
public static function generateReference()
{
$last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 5, '00000', STR_PAD_LEFT);
}
}
?>
最后,您应该删除class_index.php
中的/var/cache/prod
才能使用它。