Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

find('all') somente retorna valor 1

Boa Tarde, A situação que estou passando é a seguinte, ao consultar o campo "ativo" só retorna o valor 1, sendo que no banco existe registros com valor 0 (zero).

Criei a seguinte tabela no banco

create table situacaos(
id int not null primary key AUTO_INCREMENT ,
descricao varchar(255) not null,
ativo tinyint(2)
);

o campo "ativo" estava definido como boolean anteriormente, alterei para tinyint(2) como teste para verificar se a situação se normalizava, porem continuou retornando o valor 1;

O select no banco retorna os seguintes valores

id descricao ativo 1 ativo 1 2 inativo 0

Porem quando consulto pela aplicação somente retorna o valor 1 para o campo ativo

Controller

<?php 
    namespace App\Controller;
    use App\Controller\AppController;
    use Cake\ORM\TableRegistry;

    Class SituacaosController extends AppController{

        public function index(){
            $situacaosTable = TableRegistry::get('situacaos');
            $situacoes = $situacaosTable->find('all');
            $this->set('situacoes',$situacoes);
        }
    }
 ?>

Table

<?php 
    namespace App\Model\Table;

    Use Cake\ORM\Table;
    Use Cake\Validation\Validator;

    class SituacaosTable extends Table{

    }
 ?>

entity

<?php
namespace App\Model\Entity;
use Cake\ORM\Entity;

class Situacao extends Entity{

}
?>
5 respostas

Thiago, tudo bem? Dá um select direto no banco pra gente ver se existe algum registro que esteja com o campo ativo como 0?

Bom Dia Wanderson,

fazendo select direto no banco retorna os valores com 0, peguei o select que foi executado pelo find('all') e rodei direto no banco, retornou correto os valores.

Fiz um segundo teste, gerei o código do sistema pelo bake, e o sistema trouxe todas as informações corretas, porem não consegui compreender o funcionamento da busca que o bake gera.

Espera, quer dizer que o problema foi resolvido? Direto pelo cake tá funcionando agora?

solução!

Boa Tarde Wanderson Macêdo,

Descobri o motivo, na index.ctp acabei cometendo um erro, na comparação coloquei apenas um sinal de =, assim alterando o valor da variável.

Muito obrigado a atenção

Excelente Thiago, fico feliz que tenha encontrado o problema e compartilhado a solução aqui. Bons estudos!

Abç ;)