Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estou interligando algumas tabelas com um model (blog) da seguinte maneira:
var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'order' => 'data_hora DESC'));
var $belongsTo = array('atr_blogs' => array(o erro é o seguinte:
Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]
Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` DESC, `id` ASC
Query: SELECT COUNT(*) AS `count` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` ASC
Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` desc, `id` ASC LIMIT 3
alguem sabe me dizer como resolver isso ?
obrigado, desde já /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
>
>
estou interligando algumas tabelas com um model (blog) da seguinte maneira:
var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'order' => 'data_hora DESC'));
var $belongsTo = array('atr_blogs' => array(o erro é o seguinte:
Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]
Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` DESC, `id` ASC
Query: SELECT COUNT(*) AS `count` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` ASC
Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` desc, `id` ASC LIMIT 3
alguem sabe me dizer como resolver isso ?
obrigado, desde já /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
Teu problema tá nesses Order ali cara, tá dizendo que o ID é ambíguo. Tá sendo usado dois campos com o mesmo nome.
Tem o mesmo nome, mas são de classes diferentes...Tentei fazer o sugeriu, mas continuou não funcionando /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/sad.gif&key=02b1574f7da1e723d8a7dbae07272745fb341b432c19ce24d0490ce410222838" alt="Imagem Postada" />
Quando eu tiro o $belongsTo, funciona tudo certo.
o que pode ser isso ??
atr_blogs e img_blogs são tabelas no seu banco né?
posta as tabelas pra eu dar uma olhada..
Mas ele tá se perdendo ali no order..
Acho que é como você estivesse dizendo pro SQL fazer " ORDER BY id ASC, id DESC "
Pelo que eu entendi, teria que ser " ORDER BY img_blogs.id ASC, atr_blogs.id DESC "
::edit::
Inclusive no SQL que você postou ele faz exatamente isso que eu disse "" ORDER BY id ASC, id DESC "".
Mesmo tirando as orndenações, dá erro.
tabela atr_blogs:
CREATE TABLE atr_blogs (id BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,nome VARCHAR(255) NOT NULL,descricao BLOB NOT NULL,email VARCHAR(255) NOT NULL,twitter VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX id (id)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=2
tabela blogs:
CREATE TABLE blogs (id BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,atr_blogs_id BIGINT(11) UNSIGNED NOT NULL DEFAULT '0',titulo VARCHAR(255) NOT NULL,titulo_slug VARCHAR(255) NOT NULL,post BLOB NOT NULL,data-hora TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE INDEX id (id),
UNIQUE INDEX titulo_slug (titulo_slug)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=21
>
Mesmo tirando as orndenações, dá erro.
tabela atr_blogs:
CREATE TABLE atr_blogs (id BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,nome VARCHAR(255) NOT NULL,descricao BLOB NOT NULL,email VARCHAR(255) NOT NULL,twitter VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX id (id)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=2
tabela blogs:
CREATE TABLE blogs (id BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,atr_blogs_id BIGINT(11) UNSIGNED NOT NULL DEFAULT '0',titulo VARCHAR(255) NOT NULL,titulo_slug VARCHAR(255) NOT NULL,post BLOB NOT NULL,data-hora TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE INDEX id (id),
UNIQUE INDEX titulo_slug (titulo_slug)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=21
Tuas tabelas estão com ENGINE=MyISAM
Tem que ser InnoDB!
Abraço.
mesmo mudando,
ainda está dando os mesmos erros !
>
mesmo mudando,
ainda está dando os mesmos erros !
Resolvido.Estava aparecendo "id ambíguo" porque não foi definido de onde vinha o id da paginação e do findAll no controller.
Valeu pela ajuda lucasvocals /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
>
estou interligando algumas tabelas com um model (blog) da seguinte maneira:
var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'className' => 'AtrBlog',
'order' => 'id ASC'
));
o erro é o seguinte:
Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]
alguem sabe me dizer como resolver isso ?
obrigado, desde já /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
Teu problema tá nesses Order ali cara, tá dizendo que o ID é ambíguo. Tá sendo usado dois campos com o mesmo nome.