Quiero llamar a una función(método) de otro modelo(están relacionados) y no puedo.

1,828 views
Skip to first unread message

Cuchitto

unread,
Apr 15, 2010, 5:28:08 PM4/15/10
to CakePHP en Español
Tengo la siguiente consulta: Quiero llamar a una función(método) de
otro modelo(están relacionados) y no puedo.

EL problema es el siguiente:

Tengo un curso, este tiene varios horarios.

En el controlador de los HORARIOS, para llamar a un find, por ejemplo,
lo hago $this->Horario->Curso->find........ y ningún problema, pero
cuando yo defino una función miFuncion en el controlador de CURSOS, no
hay caso de llamarla, lo he probado con $this->Horario->Curso-
>miFuncion........ pero me tira un error sql (he probado varias cosas
más, con uses, pero nada) ...

Soluciono eso colocando la funcion miFuncion en el controlador del
horario y la llamo con $this->miFunción (pero la misma funcion la voy
a ocupar para varios otros modelos relacionados y no es la idea andar
copiándola y adaptándola varias veces por todos lados).


El error que me tira de SQL es el 1064, lo extraño que la consulta que
hace SQL es: miFuncion. (por eso tira obviamente el error).


Si sabes qué puede estar pasando me cuentas porfa, llevo tiempo metido
en esto

Saludos!!!

geneller naranjo

unread,
Apr 15, 2010, 5:35:49 PM4/15/10
to cakep...@googlegroups.com
que consulta estas haciendo??

asegurate de no estar poniendo el nombre del modelo en la funcion.
que no vaya a estar asi:
$this->Curso->find...
sino:
$this->find...



--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.




--
atentamente
Geneller Naranjo Alzate.

Nachopitt

unread,
Apr 15, 2010, 5:35:41 PM4/15/10
to cakep...@googlegroups.com
Las funciones creo las estás definiendo en el lugar equivocado. En lugar de definirlas en el controlador de Cursos, defínelas en el modelo Curso.

Saludos.

El 15 de abril de 2010 16:28, Cuchitto <cuch...@gmail.com> escribió:
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.




--
Ignacio Alberto Zamora Esqueda
Ingeniero de Software
Corporación Tectronic, S.A. De C.V.
Tels: (33) 3615-44-11 y 36-15-45-11
Fax: (33) 3615-46-11
sist...@tectronic.com.mx
www.tectronic.com.mx

geneller naranjo

unread,
Apr 15, 2010, 6:33:51 PM4/15/10
to cakep...@googlegroups.com
jajaja aquello de no leer bien la cosa es que pusiste la funcion en el controller tonces la solucion es importar el controller
app::import('controller', 'cursos');
$cursos = new cursos();

ahora lo accedes $cursos->miFuncion();



El 15 de abril de 2010 17:22, Samu <p.a....@gmail.com> escribió:
Yo tuve el mismo problema, no reconoce las funciones del modelo cuando se llama a traves de la relacion de otro modelo, la unica solucion que pude hacer es con App::import('Model','Modelo') y ahi pude acceder a esos metodos, no me acuerdo si era algo que no funcionaba en cake o directamente no estab permitido acceder a los metods a travez de modelos relacionados de tercer nivel.

$this->Modelo->funcion funciona perfectamente

$this->Modelo->ModeloRelacionado->funcion no reconoce el metodo, se ve que en la relacion de modelo hace una extencion de la clase AppModel y no de la calse ModeloRelacionado

--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.


--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.



--
atentamente
Geneller Naranjo Alzate.

Samu

unread,
Apr 15, 2010, 6:39:22 PM4/15/10
to cakep...@googlegroups.com
Yo por lo menos en la version 1.2 no puedo acceder a una funcion del modelo de tercer nivel

//Controlador Usuario;
$this->Usuario->Perfil->Activos(); //no lo reconoce


//Controlador Perfil
$this->Perfil->Activos();  // return array


Solucion en el primer caso importar el MODELO y llamar a la funcion.
Reply all
Reply to author
Forward
0 new messages