Я новичок в cakePHP 3. Я создал контроллер и модель, где я вызываю функцию, чтобы получить всех пользователей из базы данных. Но когда я запустил код ниже, я получу следующую ошибку: «Вызовите функцию-член get_all_users () на boolean» .
что означает эта ошибка и как я могу это исправить?
User.php (модель)
namespace App\Model\Entity; use Cake\ORM\Entity; class User extends Entity { public function get_all_users() { // find users and return to controller return $this->User->find('all'); } }
UsersController.php (контроллер)
namespace App\Controller; use App\Controller\AppController; class UsersController extends AppController { public function index() { // get all users from model $this->set('users', $this->User->get_all_users()); } }
Обычно эта ошибка возникает, когда используется несуществующее свойство контроллера.
Таблицы, которые соответствуют имени контроллера, не обязательно должны быть загружены / установлены в свойство вручную , но даже они не существуют изначально, при попытке доступа к ним вызывает вызов метода magic getter для контроллеров, который используется для ленивой загрузки класса таблицы который принадлежит контроллеру, и он возвращает false
при ошибке, и вот где это происходит, вы будете называть метод логическим.
https://github.com/cakephp/…/blob/3.0.10/src/Controller/Controller.php#L339
В вашем случае проблема заключается в том, что User
(единственное, для сущностей) не соответствует ожидаемым Users
(множественное число, для таблиц), поэтому не может быть найден соответствующий класс таблицы.
Ваш собственный метод должен идти в классе таблицы, а не в классе UsersTable
, который вам следует получить через
$this->Users
Возможно, вы захотите перечитать документы, сущности не запрашивают данные (если вы, например, не выполняете ленивую загрузку), они представляют собой набор данных!