Faça o banco de dados da linha deleeTeall, onde 1 campo é igual a algo e outro campo não é igual a algo

StackOverflow https://stackoverflow.com/questions/3432084

Pergunta

Estou lutando para fazer isso, quero basicamente fazer um banco de dados DeleteAll, onde um campo é igual a algo e outro campo não deve ser igual a algo ... é para excluir linhas duplicadas, então quero excluir tudo, exceto uma linha .. A maneira como tentei abaixo não está funcionando, eu apreciaria nenhum conselho:

 $conditions = array (
  "Prox.proxy" => $currentproxytocheck,
  "AND" => array (
   "NOT" => array (
    "Prox.proxyid" => $currentproxyid
   )
  )
 );

$this->Prox->deleteAll(array( 'conditions' => $conditions)); 

EDITAR:

A impressão da minha matriz $ condições é:

Array
(
    [Prox.proxy] => 62.58.179.2:80
    [AND] => Array
        (
            [NOT] => Array
                (
                    [Prox.proxyid] => 36829
                )

        )

)

Erro de CakePhp:

Notice (8): Array to string conversion [CORE/cake/libs/model/datasources/dbo_source.php, line 2193]
Warning (512): SQL Error: 1054: Unknown column 'conditions' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 673]   
Foi útil?

Solução

o Sintaxe para deleteAll é diferente de find

deleteAll(mixed $conditions, $cascade = true, $callbacks = false)

Usar

$this->Prox->deleteAll($conditions); 

E sua matriz pode ser construída assim:

$conditions = array (
    "Prox.proxy" => $currentproxytocheck,
    "Prox.proxyid <>" => $currentproxyid
);

O que é a mesma coisa, mas mais legível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top