JoAnCa
(Jose 2rcv)
1
Hola a todos
Pues he creado un metodo en un modelo que necesito que sea llamado de otros controladores
En el modelo Contratos tengo el metodo:
public function getCantSuplemtos()
{
return ContSuplemento::find()->where('IDCONTRATO = :cont', [':cont'=>$this->IdContrato])->count();
}
que cuando lo llamo desde el mismo modelo o de su controlador funciona bien, pero cuando lo llamo desde otro controlador
$cantSuplmtos = Contrato::getCantSuplemtos();
me da este error
Using $this when not in object context
Como podria solucionar este problema ?
AlessandroCuba
(Manuel Alejandro Gonzalez Prieto)
2
lo primero es que estas llamando una funcion como static cuando en verdad la funcion es public.
deberias hacerlo asi
$contratos = new ContratosModel();
$cantSuplementos = $contratos->getgetCantSuplemtos()
o pudieras hacer solo esto
public static function getCantSuplemtos()
{
return ContSuplemento::find()
->where('IDCONTRATO = :cont', [':cont'=>$this->IdContrato])
->count();
}
alva0499
(alva0499)
3
Hola JoAnCa, para poder tener acceso a las funciones de otros modelos basta con crear el objeto desde tu otro modelo o controlador por ejemplo:
$modelo = new NombreModelo;
en caso de que reciba parametros la funciĆ³n solo agregarlo y listo.
$modelo->getCantSuplemtos();
JoAnCa
(Jose 2rcv)
4
Muchas gracias a los dos por sus respuestas
Lo hare de la forma que me indican