Soy nuevo en cakephp e intento crear un componente usando cakephp versión 4.0.7 .

En el componente, necesito guardar datos en una tabla. He seguido esta documentación sobre cómo insertar datos

En el componente, probé el siguiente código para el registro Mi tabla

use Cake\ORM\Locator\LocatorAwareTrait;

class MyComponent extends Component{

    public function foo()
    {
         $ProductsTable = $this->getTableLocator()->get('Products');
    }

}

En la salida, obtengo una excepción por debajo de

Call to undefined method App\Controller\Component\MyComponent::getTableLocator()

Como puedó resolver esté problema ?

1
Niloy Rony 23 jul. 2020 a las 14:26

1 respuesta

La mejor respuesta

CakePHP 4.0.x

$productsTable = \Cake\ORM\TableRegistry::getTableLocator()->get('Products');

de CakePHP 4.1

Cake \ ORM \ TableRegistry ha quedado obsoleto. Utilice Cake \ ORM \ Locator \ LocatorAwareTrait :: getTableLocator () o Cake \ Datasource \ FactoryLocator :: get ('Table')

Lea https://book.cakephp.org /4/en/appendices/4-1-migration-guide.html#orm

e intente utilizar FactoryLocator:

use Cake\Datasource\FactoryLocator;

$productsTable = FactoryLocator::get('Table')->get('Products');

//$productsTable->find()...

o inyectar rasgo dentro de la clase de componente

class MyComponent extends Component{

    use Cake\ORM\Locator\LocatorAwareTrait;

    public function foo()
    {
         $ProductsTable = $this->getTableLocator()->get('Products');
    }

}
1
Salines 23 jul. 2020 a las 11:49