Jestem nowy w CakePhp i próbując utworzyć komponent za pomocą CakePHP w wersji 4.0.7 .

W komponencie muszę zapisać dane w tabeli. Podążałem za tym tak Dokumentacja na wkładanie danych

W komponencie próbowałem poniżej kodu dla rejestru mój stół

use Cake\ORM\Locator\LocatorAwareTrait;

class MyComponent extends Component{

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

}

W wyjściu otrzymuję poniżej wyjątek

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

Jak mogę rozwiązać ten problem?

1
Niloy Rony 23 lipiec 2020, 14:26

1 odpowiedź

Najlepsza odpowiedź

cakephp 4.0.x

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

z CakePhp 4.1

Ciasto ORM TRABREGIPT został przestarzałe. Użyj Ciasteczka ORM Lokator Lokatorawaretrait :: GettableLocator () lub Ciasto DataSource FactoryLocator :: Get ('Table')

Czytaj https://book.cakepphp.org /4/pl/appendices/4-1-migracja-guide.html#orm.

i spróbuj użyć fabrykiLocatora:

use Cake\Datasource\FactoryLocator;

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

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

lub wtryskiwać cechę w klasie komponentów

class MyComponent extends Component{

    use Cake\ORM\Locator\LocatorAwareTrait;

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

}
1
Salines 23 lipiec 2020, 11:49