ユーザー登録機能の動作(add)は確認出来、ログイン画面の構築に移り、色々と情報を参考に作って、ログインフォームにデータを入力すると以下のエラーが発生。

 

Base table or view not found: 1146 Table ‘cakephp3.users’ doesn’t exist

 

どうやらusersというテーブル名はありませんよっていう意味らしい。

Authによる認証機能でデフォルトのテーブル名はusersと設定している様子。

ちなみに自分はDBのテーブル名は複数形にしていなかった為、Bakeでファイルを作ったら通常の機能には問題なかったが管理画面用の機能構築を後付けで制作したらこのような命名規則によるエラーが生じるということみたい。

しかし、これらは自動でテーブル名など紐づけてくれるからこその厳しい規則であり、どのテーブル使用するか指定する方法もある。

Auth設定の時に使用するテーブルを使用することで解決した。でも面倒くさいから次回からちゃんとDBは複数形で行こう。

// authenticateでuserModelでテーブル名を指定する
$this->loadComponent('Auth', [
    'authenticate' => [
    'Form' => [
        'userModel' => 'user',
            'fields' => [
            'username' => 'username',
            'password' => 'password'
            ],
        'finder' => 'auth',
        ]
    ],
    'loginAction' => [
        'controller' => 'User',
        'action' => 'login',
    ],
    'loginRedirect' => [
        'controller' => 'User',
        'action' => 'index',
    ],
    'logoutRedirect' => [
        'controller' => 'User',
        'action' => 'login',
    ],
    'authError' => 'ログインに失敗しました',
]);
$this->Auth->sessionKey = 'Auth.user';