obter dados do banco de dados usando um array no yii
-
26-12-2019 - |
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.
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