tutorial ejemplos cakephp3 cakephp

ejemplos - ¿Cuál es la mejor manera de acceder a otro modelo de CakePHP en un controlador?



cakephp tutorial (2)

Digamos que tengo dos controladores como este Table1sController y Table2sController . Con los modelos correspondientes: Table1sModel , Table2sModel .

En el Table1sController , obtuve esto:

$this->Table1sModel->action();

Supongamos que quiero acceder a algunos datos en Table2sModel .

¿Cómo es posible hacer algo como esto en Table1sController ? Lo he intentado en Table1sController:

$this->Table2sModel->action();

Pero recibí un mensaje de error como este:

Propiedad indefinida: Table1sController :: $ Table2sModel


Algo está intrínsecamente mal con lo que estás haciendo.

En cualquier controlador, puede especificar $ uses = array (''Table1sModel'', ''Table2sModel'', ''LolModel'') y usar cada Modelo que necesite en su controlador. No está llamando a otro controlador para acceder a un Modelo. Los modelos son para acceso a datos, usted accede a los necesarios directamente desde cualquier controlador.

Entiendo que muchos ejemplos de MVC casi siempre muestran una página de un controlador con un modelo que es terriblemente incorrecto, ya que el 99% de los casos tiene un sitio de un controlador que usa muchas partes diferentes de diferentes modelos.

(Si realmente necesita llamar a una acción, use $ this-requestAction ())


Hay algunas maneras de ir aquí.

Si sus modelos tienen asociaciones definidas (hasMany, etc.), entonces puede acceder a los métodos de ese modelo (suponiendo que esté en Model1Controller) con:

$this->Model1->Model2->method();

Si no existe una asociación de modelo entre los dos modelos, pero desea poder utilizar los métodos del Modelo2, puede agregar una entrada en el atributo $ uses de model1Controller. Ver http://book.cakephp.org/2.0/en/controllers.html#components-helpers-and-uses

Finalmente, si se trata de una conexión transitoria (no desea cargar los gastos generales de cargar otros modelos cada vez, porque rara vez va a acceder al modelo2), consulte la sección del manual sobre cómo crear / destruir asociaciones sobre la marcha, en http : //book.cakephp.org/2.0/en/models/associations-linking-models-together.html