質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

5153閲覧

cakephp3 DBから値を取得したい

zaltsu9

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2016/06/27 11:41

編集2016/06/28 01:05

cakephp3の環境で、
POSTで受けたメールアドレスをデータベースから探して、存在するかチェックを行いたいのですが、
エラーが発生てしまいます。
どなたかご教示いただけないでしょうか。

Error: [PDOException] SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Users.password' in 'field list'

カラム情報には『passwd』としているのですが'Users.password'となり、???状態です。
Modelはbakeコマンドから作成しました。

$ cake bake model users

コントローラ

<?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; class IndexController extends AppController { public function index() { $email = $this->request->data("email"); $query = TableRegistry::get("Users")->find(); foreach($query as $q) { print_r($q); } }

Model/Entity/User.php

<?php namespace App\Model\Entity; use Cake\ORM\Entity; class User extends Entity { protected $_accessible = [ '*' => true, 'id' => false, ]; protected $_hidden = [ 'passwd' ]; }

Model/Table/UsersTable.php

<?php namespace App\Model\Table; use App\Model\Entity\User; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; class UsersTable extends Table { public function initialize(array $config) { parent::initialize($config); $this->table('users'); $this->displayField('id'); $this->primaryKey('id'); $this->addBehavior('Timestamp'); } public function validationDefault(Validator $validator) { $validator ->allowEmpty('id', 'create'); $validator ->requirePresence('name', 'create') ->notEmpty('name'); $validator ->email('email') ->requirePresence('email', 'create') ->notEmpty('email'); $validator ->requirePresence('passwd', 'create') ->notEmpty('passwd'); return $validator; } public function buildRules(RulesChecker $rules) { $rules->add($rules->isUnique(['email'])); return $rules; } }

テーブル情報

mysql> desc users; +-------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------------------+------+-----+---------+----------------+ | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | email | varchar(255) | NO | | NULL | | | passwd | char(32) | NO | | NULL | | +-------------+---------------------+------+-----+---------+----------------+

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

obi_yuta

2016/06/27 18:21

モデルも何か記述しているようであればコードを記載していただけるとありがたいです。
zaltsu9

2016/06/28 01:08

ご連絡ありがとうございます。モデルも追記させていただきました。 そもそもcakephpの使い方として『passwd』といったカラム名は使えないなどはありますか?
KatsumiTanaka

2016/06/28 08:53

CakeDC/Usersプラグインを使用していませんか?このプラグインでは、パスワードは「password」カラム固定となってしまいます
zaltsu9

2016/06/29 01:07

CakeDC/Usersプラグインを使用していると固定になるのですね! CakeDC/Usersプラグインを意図的には使用している認識はないのですが、 プラグインが使われているかはどこを確認するにはどうすればよろしいでしょうか?
KatsumiTanaka

2016/06/29 01:11

以下のサイトが、CakePHP3におけるCakeDC/Usersの導入についてまとまっているので、参照してみてください ただ、明示的に導入していないのであれば、該当プラグインは適用されておらず、その場合はPasswordカラムが使用されてしまうのは、別の理由になりますね http://isoon.org/wp/2015/12/15/cakedc-users-plugin-for-cakephp-3-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/
zaltsu9

2016/06/29 09:53

ご連絡ありがとうございます。 ご紹介いただいたページを見てみましたがCakeDC/Usersプラグインの利用はしていませんでした。 なので別の理由が問題になるかと思います。
guest

回答1

0

ベストアンサー

記憶が曖昧ですが
”AuthComponent は、「username」と「password」というフィールドを持つ「users」テーブルを使おうとします。しかし状況によっては、データベースでのカラム名に「password」というものは使えない場合があります。”
ということで passwdカラム名が使えないかった記憶。
設定で回避出来たと思うのですが、、、

投稿2016/06/29 04:45

nakamori-daisuk

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zaltsu9

2016/06/29 10:23

ご連絡ありがとうございます。 ということはcakephpを使う上での基本ルールとなり、 素直に『password』とすることが解決への道ということですね^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問