从Prestashop DB获取最新价值

时间:2018-03-26 05:01:15

标签: mysql prestashop-1.6

我正在尝试使用WHERE子句检索一个值,但此时它不起作用。

$query= new DbQuery();
$query->select('id_carrier')
->from('carrier')
->where('name = ' . "'XXX'");
$carrier_id = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);

print $carrier_id; //returns the first value found

目前,它正在返回第一个值,但我需要使用最新的,因为在Prestashop运营商中进行的每个更改,ID都会更改。因此,我需要获得最新的价值。

我正在检查并发现了关于(int)Db :: getInstance() - > Insert_ID();但我已经尝试过了,它也没有用。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

由于它是自动增量的Id,在正常使用情况下最大的id也将是最后插入的,你可以使用:

$query= new DbQuery();
$query->select('max(id_carrier)')
    ->from('carrier')
    ->where('name = ' . "'XXX'");
$carrier_id = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);

Insert_ID()仅在载波(在本例中)插入当前连接时有效。并且只检索最后一个。基本上,如果它刚刚插入。

答案 1 :(得分:0)

管理以使用以下代码:

$query = new DbQuery();
$query->select('id_carrier')
->from('carrier')
->where('name = ' . "'XXX'");
$query->orderBy('id_carrier DESC');
$carrier_id = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);

因为它只取一个值,所以现在正在使用。