Pergunta

Eu sou novo no yii.meu problema é que tenho um array $hometeamid que contém todo o ID necessário para exibir detalhes.Como posso obter os dados.por favor alguém me ajude
eu tentei
$mod = Yii::app()->db->createCommand('SELECT * FROM event WHERE id = 1432201 or id = 1432208')->queryAll();

 $no=1432201;
 $mod = Event::model()->findByAttributes(array('id' => $no));<br>

mas não funciona.Campos em branco estão sendo exibidos.

Foi útil?

Solução

É melhor fazer addInCriteria com CDbCriteria ou createCommand simples, mas antes de fazer isso, verifique sua consulta no phpmyadmin/navicate/mysql workbench etc.manualmente (está retornando resultado ou não?)

$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds 
$result = Event::model()->findAll($criteria);

OU

$ids = implode(', ', $homeTeamIds);
$sql = "SELECT * FROM event WHERE id IN ($ids)"   // like where id IN(1,2,3,4)
$result = Yii::app()->db->createCommand($sql)->queryAll();

Outras dicas

não use findByAttributes se você definir o id como chave primária em seu banco de dados.

exemplo:

$mod = Event::model()->findbyPk($no);

Você pode usar Critérios CDbde adicionarInCondição() método para encontrar todas as linhas com valores correspondentes a itens em uma matriz, por exemplo, algo assim deve funcionar (não testado):

$hometeamid = array(
    '1432201',
    '1432208',
    // ... etc... all the id's you want to show
);
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$hometeamid,'OR');
$mod = Event::model()->findAll($criteria);

Há até um exemplo usando addInCondition no topo da página de referência do CDbCriteria: http://www.yiiframework.com/doc/api/1.1/CDbCriteria

Primeiro processe sua matriz em uma string separada por vírgula que é usada como valor condicional na consulta SQL

$idString = implode(', ', $hometeamid);

Em seguida, coloque essa corda dentro IN cláusula na consulta sql.

$sql = "SELECT *
           FROM event
         WHERE id IN ($idString)"

$mod = Yii::app()->db->createCommand($sql)->queryAll();

após a execução de queryAll método você receberá as linhas relacionadas como array resultante

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