Expose SQL / Dumb Question

I’m trying to expose the SQL statements that GroceryCrud execute to debug a problem.
Maybe It’s a dumb question, but I can’t exply why a filter where is not working as expected. In associado(), the statement $crud->where (‘ativo’, 1); is working, filtering the active associates. But in the second class - associadosArquivados(), the statement $crudInativo->where (‘ativo’, 0); is returning the same output as the first. I already remove all the customizations and filterings and the problem occour always

class Associado extends BaseController
{
    public function associados()
    {
        $titulo = 'Associados';
        $crud = $this->_getGroceryCrudEnterprise();

        $crud->setCsrfTokenName(csrf_token());
        $crud->setCsrfTokenValue(csrf_hash());

        $crud->setTable('cad_associados');
        $crud->setSubject('Associado', 'Associados');

        $associadosArquivados = site_url('admin/associadosarquivados');
        $crud->setDatagridButton('Arquivados', 'plus', $associadosArquivados, false, 'top-left');

        $crud->setPrimaryKey('id', 'cad_associados');
        $crud->setRelation('cargo', 'assoc_x_cargos', 'cargo');
        $crud->setRelation('sexo', 'assoc_x_sexo', 'sexo');
        $crud->setRelation('situacao', 'assoc_x_status', 'status');
        $crud->setRelation('operadora', 'assoc_x_operadoras', 'nome');
        $crud->setRelation('estado_civil', 'assoc_x_estadoCivil', 'estadoCivil');
        $crud->where('ativo', 1);

        // Altera o nome de exibição das colunas (tanto na grade quanto nos formulários)
        $crud->displayAs([
            'data_nascimento' => 'Data de Nascimento',
            'naturalidade'    => 'Naturalidade',
            'rg'              => 'RG',
            'cpf'             => 'CPF',
            'endereco'        => 'Endereço',
            'numero'          => 'Número',
            'bairro'          => 'Bairro',
            'cidade'          => 'Cidade',
            'cep'             => 'CEP',
            'complemento'     => 'Complemento',
            'banco'           => 'Banco',
            'agencia'         => 'Agência',
            'conta'           => 'Conta',
            'tratamento'      => 'Tratamento',
            'nome'            => 'Nome',
            'sexo'            => 'Sexo',
            'situacao'        => 'Situação',
            'estado_civil'    => 'Estado Civil',
            'conjuge'         => 'Nome do Cônjuge',
            'filiacao_pai'    => 'Nome do Pai',
            'filiacao_mae'    => 'Nome da Mãe',
            'email1'          => 'E-mail Principal',
            'email2'          => 'E-mail Secundário',
            'fone1'           => 'Telefone Principal',
            'fone2'           => 'Telefone Secundário',
            'celular'         => 'Celular',
            'operadora'       => 'Operadora',
            'estado_atuacao'  => 'Estado Atuação',
            'cidade_atuacao'  => 'Cidade Atuação',
            'possemagistratura' => 'Posse Magistratura',
            'ambanamatra' => 'AMB / ANAMATRA',
            'uf'              => 'UF',
            'obs' =>'Observação',
            'opccontato' => 'Opção Contato'
        ]);

        $crud->unsetSearchColumns(['ativo','obs']);

        // Formata a exibição da coluna 'ativo'
        $crud->callbackColumn('ativo', function ($value, $row) {
            return $value == 1 ? '<span class="badge bg-success">ATIVO</span>' : '<span class="badge bg-danger">inativo</span>';
        });

        //Colunas para esconder no datagrid
        $crud->unsetColumns([
            'banco',
            'agencia',
            'conta',
            'filiacao_pai',
            'filiacao_mae',
        ]);

        // Remove o botão "Excluir" da lista principal
        $crud->unsetDelete();

        // Remove os checkboxes de seleção de linha (ações em massa)
        //$crud->unsetBulkActions();

        //Agrupamento de colunas
        $crud->groupFields("Identificação", ['tratamento' , 'nome', 'sexo', 'situacao', 'data_nascimento', 'naturalidade', 'rg', 'cpf']);
        $crud->groupFields("Filiação / Cônjuge", ['estado_civil', 'conjuge', 'filiacao_pai', 'filiacao_mae']);
        $crud->groupFields("Endereço", ['endereco', 'numero', 'bairro', 'cidade','uf', 'complemento','cep']);
        $crud->groupFields("Dados Associativos", ['cidade_atuacao', 'estado_atuacao', 'banco', 'agencia','conta', 'ativo']);
        $crud->groupFields("Contato", ['email1','email2', 'fone1', 'fone2', 'celular', 'operadora']);
        $crud->groupFields("Observação", ['obs']);

        $output = $crud->render();

        return $this->_associado_output($titulo, $output);
    }
    public function associadosArquivados()
    {
        $associados = site_url('admin/associados');
        $titulo = 'Associados Arquivados';
        $crudInativo = $this->_getGroceryCrudEnterprise();

        $crudInativo->setCsrfTokenName(csrf_token());
        $crudInativo->setCsrfTokenValue(csrf_hash());

        $crudInativo->setTable('cad_associados');
        $crudInativo->setSubject('Associado', 'Associados');

        $crudInativo->setDatagridButton('Associados', 'plus', $associados, false, 'top-left');

        // $crudInativo->setPrimaryKey('id', 'cad_associados');
        // $crudInativo->setRelation('cargo', 'assoc_x_cargos', 'cargo');
        // $crudInativo->setRelation('sexo', 'assoc_x_sexo', 'sexo');
        // $crudInativo->setRelation('situacao', 'assoc_x_status', 'status');
        // $crudInativo->setRelation('operadora', 'assoc_x_operadoras', 'nome');
        // $crudInativo->setRelation('estado_civil', 'assoc_x_estadoCivil', 'estadoCivil');
        $crudInativo->where('ativo', 0);
        
        $crudInativo->unsetSearchColumns(['obs']);

        // Formata a exibição da coluna 'ativo'
        // $crudInativo->callbackColumn('ativo', function ($value, $row) {
        //     return $value == 1 ? '<span class="badge bg-success">ATIVO</span>' : '<span class="badge bg-danger">inativo</span>';
        // });

        //Colunas para esconder no datagrid
        $crudInativo->unsetColumns([
            'banco',
            'agencia',
            'conta',
            'filiacao_pai',
            'filiacao_mae',
            'naturalidade',
            'endereco',
            'numero',
            'bairro',
            'cidade',
            'cep',
            'complemento',
            'tratamento',
            'situacao',
            'estado_civil',
            'conjuge',
            'email1',
            'email2',
            'fone1',
            'fone2',
            'celular',
            'operadora',
            'possemagistratura',
            'uf',
            'opcaocontato',
        ]);

        // Remove o botão "Excluir" da lista principal
        $crudInativo->unsetDelete();

        // Remove os checkboxes de seleção de linha (ações em massa)
        //$crudInativo->unsetBulkActions();


        $output = $crudInativo->render();

        return $this->_associado_output($titulo, $output);
    }
    private function _associado_output($titulo, $output = null) {
        if (isset($output->isJSONResponse) && $output->isJSONResponse) {
            header('Content-Type: application/json; charset=utf-8');
            echo $output->output;
            exit;
        }
        
        // Cria o array com todas as variáveis para a view
        $data['title'] = $titulo;
        $data['output'] = $output->output;
        $data['css_files'] = $output->css_files;
        $data['js_files'] = $output->js_files;

        return view('partials/admin/associados', $data);
    }

    private function _getDbData() {
        $db = (new ConfigDatabase())->default;
        return [
            'adapter' => [
                'driver' => 'Pdo_Mysql',
                'host'     => $db['hostname'],
                'database' => $db['database'],
                'username' => $db['username'],
                'password' => $db['password'],
                'charset' => 'utf8'
            ]
        ];
    }
    private function _getGroceryCrudEnterprise($bootstrap = true, $jquery = true) {
        $db = $this->_getDbData();
        $config = (new ConfigGroceryCrud())->getDefaultConfig();

        $groceryCrud = new GroceryCrud($config, $db);
        return $groceryCrud;
    }
}

I guess you wanted to actually write where(['ativo' => 1]) (and where(['ativo' => 0]) or maybe where('ativo') and where('NOT ativo'))?

The way you wrote it, you pass two arguments to a method taking only one. So the second argument gets dropped, effectively calling where('ativo') in both cases, which will end up as WHERE ativo in the SQL.

WHERE ativo gives you all rows where the value of ativo is interpreted by the DBMS as true (i.e., assuming there only are 0 and 1, the rows with 1 but not the ones with 0). That’s why where('ativo', 1) looks like it’s producing WHERE ativo = 1 even though it isn’t.

Thanks!!
I’m used to use the CI4 model sintaxe. I’ll try.

Worked as expected!!! Thanks!!!
:wink: :blush:

Anyway, there is some way to expose the sql that the app runs? For debug? I´m the old school guy.