Saludos :
Tengo en mi aplicacion articulos con votos y usuarios. En la vista del articulo obtengo lo votos del articulo mediante una relacion ($articulos->votosc) y en este array tengo el id de usuario. Necesito comprobar si el usuario ya ha votado esta articulo pero no doy con la forma adecuada :
<?php foreach($articulo->votosc as $voto): ?>
<?php if($voto->usuario_id==Yii::app()->user->id) {?>
Votado
<?php }else{ ?>
Votar
<?php } ?>
<?php endforeach; ?>
Necesitaría algo más sencillo como :
<?php if(!in_array($articulo->votosc, Yii::app()->user->id)){ ?>
Votar
<?php } ?>
pero me da error : in_array() [<a href='function.in-array'>function.in-array</a>]: Wrong datatype for second argument
Si alguien me puede orientar, GRACIAS
Page 1 of 1
Comprobar si elemento existe en AR relation
#2
Posted 15 January 2010 - 08:41 AM
Por que no haces una busqueda directamente sobre la tabla con la condicion usuario_id==Yii::app()->user->id
algo como
[edit]
tambien en la condicion tienes que poner algo como
los nombres de los campos no los se
algo como
<?php if(Votos::model()->find("usuario_id=Yii::app()->user->id")===null) echo Votar; else echo Votado; ?>
[edit]
tambien en la condicion tienes que poner algo como
"$articulo->idArticulo=idArticulo"
los nombres de los campos no los se

This post has been edited by Horacio Segura: 15 January 2010 - 08:44 AM
#3
Posted 18 January 2010 - 06:14 AM
Gracias Horacio, a veces uno de tanto mirar la pantalla solo ve un camino y no miras todas las posibilidades para llegar al mismo punto.
Una pregunta de buenas prácticas, ¿es bueno meter una consulta como esta (
Una pregunta de buenas prácticas, ¿es bueno meter una consulta como esta (
<?php if(voto::model()->findByAttributes(array('usuario_id'=>Yii::app()->user->id,'articulo_id'=>$articulo->id))===null) {?>) en la vista?, no sería más adecuado al modelo MVC crear una variable true or false en el controlador y pasarla a la vista?
#4
Posted 18 January 2010 - 06:26 AM
Si. Lo ideal es que la vista sea solo eso: una vista. En el controlador haces las cosas (o mejor en el modelo, ya que es el modelo el que sabe si es true o false)
Don't say what you think, think what you say
The problem is communication! Excess of communication!
The problem is communication! Excess of communication!
Share this topic:
Page 1 of 1