(Solucionado) Buscar un campo especifico en una tabla

Buenos días para todos

Nuevamente por aquí con una consulta para los más avanzados con el tema de Yii. Bueno tal vez a alguien ya le pasó y ya lo solucionaron pero para mí todavía está en abstracto jeje.

Tengo una tablaX con dos campos: nombres y apellidos (ejemplo: pepito perez), debo hacer una función en el modeloX, la cual pueda llamar desde la vistaX, le pase como parámetro el nombre (pepito) y me regrese el apellido (Pérez).

La estructura sería algo así, creo:

En el modeloX


	public function buscaApellido ()

	{

$Apellido = TablaX::model()->find("apellido = ->$Nombre");		

		);

	}

En la vistaX


<?php $model-> buscaApellido (‘Pepito’)  ?>

Algo similar aprendí a hacer para llenar un combo box, pero esta vez solo necesito extraer un dato puntual pero no lo logro :blink: , alguien me puede echar una mano?

En el modeloX


	public function buscaApellido ($nombre)

	{

    return TablaX::model()->find("nombre = $nombre")->apellido;	    

    //retorna el primer registro que contiene nombre = $nombre

	}



En la vistaX




<?php echo $model-> buscaApellido (‘Pepito’)  ?>




public function buscaApellido($nombre)

{

  $criteria=new CDbCriteria;

  $criteria->condition = "t.nombre= ':nombre'";

  $criteria->params = array(

    ':nombre' => $nombre

  );

  return TablaX::model()->find($criteria);

}

y lo utilizas TablaX::model()->buscaApellido("pepito")->apellido;

Tambien utilizando scopes lo puedes hacer

Holas, gracias por las ideas.

Horacio me gusta esta forma, porque la entiendo mejor, pero no se porque solo trae el primer registro, es decir mas abajo en el registro 10 tengo nombre Fito, me deberia debolver de apellido Paez.

por ahora solo puedo hacer esto


<?php echo $model->buscaApellido("nombre")  ?>

y me trae correctamente el apellido de la primera persona, si escribo Fito en vez de la palabre nombre, ya se despapaya, jeje, y aperece este error:


CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fito' in 'where clause'. The SQL statement executed was: SELECT * FROM `Datos_Aplicante` `t` WHERE nombre = fito LIMIT 1 

Jack, estube leyendo sobre scopes, como soy muy novata aun no domino bien las estrucutras, aunque siguiendo un ejemplo paso por paso logre mostrar una informacion de la tabla, pero se me complido la vida al tratar de reproducirlo en mi programa real. tengo tablas sueltas realmente, aun no las he relacionado entre si con llaves primarias o foraneas (PK, FK)

Con la idea que me das


<?php echo tablaX::model()->buscaApellido("Fito")->apellido; ?>

obtengo un mensaje de error:


Trying to get property of non-object  

no se se me falte alguna definicion.

Gracias muchachos, por esta colaboracion :rolleyes: , desde que ingrese al foro he podido avanzar un poco en mi proyecto, pero bueno poco a poco voy aprendiendo.

bien… de la manera en que Horacio recomendo hacen falta las comillas…


return TablaX::model()->find("nombre = '".$nombre."'")->apellido;

Super Bien !!

Gracias por el dato Jack, ya quedo funcionando la funcion, valga la redundancia ;)

Todos esos detallitos sonaprendizaje !!

Byee