Problemas al llamar un metodo de otro modelo en Yii2


(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 ?


(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) #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();


(Jose 2rcv) #4

Muchas gracias a los dos por sus respuestas
Lo hare de la forma que me indican