Долго пришлось помучиться, чтобы найти способ вывести MySQL запрос собранный через API Amiro.CMS в законченном виде в браузер. Все дело в том, что на текущий момент документация по ссылке http://manual.amiro.ru/docs/api6/DB/DB_Query.html откровенно вводит в заблуждение: 
Предложенный вариант (с поправками под наши нужды)
$sql = DB_Query::getUpdateQuery(
'cms_es_items',
array(
'ext_picture' => DB_Query::getSnippet('%s')->q($cover_image)
),
DB_Query::getSnippet('WHERE `sku`=%s')->q($itemSku)
);
var_dump($sql);
Выдаст через var_dump() что-то типа следующего
object(DB_Snippet)#8 (2) {
["snippet":protected]=>
string(28) "UPDATE %s%s SET `%s` = %s %s"
["aArgs":protected]=>
array(5) {
[0]=>
string(0) ""
[1]=>
string(12) "cms_es_items"
[2]=>
string(11) "ext_picture"
[3]=>
object(DB_Snippet)#5 (2) {
["snippet":protected]=>
string(2) "%s"
["aArgs":protected]=>
array(1) {
[0]=>
string(20) "'05132135.cover.jpg'"
}
}
[4]=>
object(DB_Snippet)#9 (2) {
["snippet":protected]=>
string(14) "WHERE `sku`=%s"
["aArgs":protected]=>
array(1) {
[0]=>
string(9) "'5132135'"
}
}
}
}
Но тут нам опять же пришла на помощь все та же документация по API (http://manual.amiro.ru/docs/api6/DB/DB_Query.html#methodget):
// Returns query string.
public get ( [ string $forceFields = '' ] ) returns string;
string $forceFields
Return only these fields in selection if passed
Правим наш код
$sql = DB_Query::getUpdateQuery(
'cms_es_items',
array(
'ext_picture' => DB_Query::getSnippet('%s')->q($cover_image)
),
DB_Query::getSnippet('WHERE `sku`=%s')->q($itemSku)
);
var_dump($sql->get());
И этот вариант работает на "Ура"!
string(82) "UPDATE cms_es_items SET `ext_picture` = '05132135.cover.jpg' WHERE `sku`='5132135'"
|