我正在尝试从prestashop获取标记ID,但TagsCore不提供所有标记的列表,也不包含按名称获取标记的方法?是否有可能不以某种方式编写自定义函数?感谢
答案 0 :(得分:1)
在TagCore中你有结构:
public function __construct($id = null, $name = null, $id_lang = null)
{
$this->def = Tag::getDefinition($this);
$this->setDefinitionRetrocompatibility();
if ($id) {
parent::__construct($id);
} elseif ($name && Validate::isGenericName($name) && $id_lang && Validate::isUnsignedId($id_lang)) {
$row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
SELECT *
FROM `'._DB_PREFIX_.'tag` t
WHERE `name` = \''.pSQL($name).'\' AND `id_lang` = '.(int)$id_lang);
if ($row) {
$this->id = (int)$row['id_tag'];
$this->id_lang = (int)$row['id_lang'];
$this->name = $row['name'];
}
}
}
所以,如果你打电话:
$tag = new Tag(null, "stringtag", $id_lang);
if($tag->id !== null){
// stringtag exists for that id_lang
}
但是没有获取所有标签的列表/集合的方法。但是一个简单的查询,如:
Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tag`')
或
Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tag` WHERE `id_lang`='.$id_lang)
非常简单,可以使用所有标记获取数组。