Galera, estou com dificuldade em criar uma consulta pelo criteria, quero que no Search apareçam só os campos relacionados ao ID de um usuário,ou seja, alguém sabe como faço para criar esta query pelo Criteria do Search default que o Yii geral na model?
Query:
SELECT a.* from associacao as a, maternidadeassociacao as ma where a.idassociacao = ma.idassociacao and ma.idmaternidade = $idmaternidade
Deixei separado para você visualizar o que eu fiz!
Tu atribui os dados ao Yii::app()->user.
Ai no seu model, lá na função search(), você coloca uma $criteria->addCondition(‘idmaternidade = :idmaternidade ‘, ‘params’ => array(’:idmaternidade’ => Yii::app()->user->idmaternidade))
Hum, tipo que o controle de permissões já esta pronto, o que não consigo na verdade é adaptar a função Search() que tem dentro de meu Model.
Eu estou recebendo por paramentro nesta função o atributo $idmaternidade, pq quando chamo ele tenho que pesquisar todos os valores desta maternidade.
Por exemplo:
Tabela associação (É o model que estou precisando alterar o Search()) tenho:
idassociacao
associacao
descricao
Tabela maternidade tenho:
idmaternidade
maternidade
Tabela maternidadeassociacao tenho:
idmaternidadeassociacao
idassociacao
idmaternidade
No model da Tabela associação quero que o search retorne apenas valores onde a query abaixo é satisfeita:
SELECT a.* from associacao as a, maternidadeassociacao as ma where a.idassociacao = ma.idassociacao and ma.idmaternidade = $idmaternidade
onde $idmaternidade é um valor int.
Entendeu? Eu já tentei fazer assim:
public function search($idmaternidade)
{
//$sql = "SELECT a.* from associacao as a, maternidadeassociacao as ma where a.idassociacao = ma.idassociacao and ma.idmaternidade = $idmaternidade";
//$associacoes_list=Associacao::model()->findAllBySql($sql);
$criteria=new CDbCriteria;
$criteria->compare('idassociacao',$this->idassociacao);
$criteria->compare('idcategoria',$this->idcategoria);
$criteria->compare('nome',$this->nome,true);
$criteria->compare('cnpj',$this->cnpj,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('datacadastro',$this->datacadastro,true);
$criteria->condition = "idassociacao IN SELECT a.idassociacao from associacao as a, maternidadeassociacao as ma where a.idassociacao = ma.idassociacao and ma.idmaternidade = $idmaternidade";
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}