我正在尝试使用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();但我已经尝试过了,它也没有用。
非常感谢任何帮助。谢谢。
答案 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);
因为它只取一个值,所以现在正在使用。