質問: t_role.user_no ; -- db_master.tbl_user_auths -- 認証テーブル CREATE TABLE `tbl_user_auths` ( `user_no` CHAR(6) NOT NULL, `password` VARCHAR(255) NOT NULL, PRIMARY KEY (`user_no`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ; -- db_master.tbl_users -- ユーザー情報テーブル CREATE TABLE `tbl_users` ( `user_no` CHAR(6) NOT NULL, `user_name` VARCHAR(50) NOT NULL, `post_code` INT(11) NOT NULL, PRIMARY KEY (`post_code`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ; -- db_master.tbl_posts -- 役職テーブル CREATE TABLE `tbl_posts` ( `post_code` INT(11) NOT NULL, `post_name` VARCHAR(50) NOT NULL, PRIMARY KEY (`post_code`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ; ``` ### 試したこと 公式サイトのチュートリアルにて、ログイン認証の項目を同じように作成してみましたが応用が分かりません。 ### 補足情報(言語/FW/ツール等のバージョンなど) CakePHP3.5.4 MySQL Apache XAMPP
回答: なんとか、自己解決出来ました。 1.ビューテーブル(vw_users)を利用する方法で調べたところ、bakeで作成する方法がありました。 以下のサンプルでvw_usersをindex.phpで表示出来るようになります。 2.よくある認証方法ではuserテーブルを使ったサンプルがあります。 このuserテーブルをvw_users(ビュー)に置き換えれて認証出来れば、やりたいことが実現できます。 ちなみに、vw_usersには、以下の様に password も取得出来るように修正しました。 正直なところ、セキュリティ上好ましくない方法だと感じています。 本来であれば、db_master.tbl_user_auths だけでユーザー認証を行い、認証出来たら、db_cakeapp.vw_users を抽出してユーザー情報を取得するのが正しい手順だと思います。 とりあえず、これで認証出来ておりますので、自己解決とします。 ``` SELECT m_user.user_no, m_user.password, user_name, m_post.post_name, t_role.user_role FROM db_master.tbl_users AS `m_user` LEFT JOIN db_master.tbl_posts AS `m_post` ON m_post.post_code = m_user.post_code LEFT JOIN db_cakeapp.tbl_roles AS `t_role` ON m_user.user_no = t_role.user_no ; ```