ユーザーを認証するには、Authentication コンポーネントを使用する必要があります。これは、すべてのデータをサーバーとリクエストに自動的にバインドするため、CakePHP 内での最適な実装として機能します。
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'plugin' => 'Users'
],
'authError' => 'Did you really think you are allowed to see that?',
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email']
]
],
'storage' => 'Session'
]);
}
ドキュメントを参照してください: http://book.cakephp.org/3.0/en/controllers/components/authentication.html
元の質問に答えるには
Cake 2 は、配列構造を持つ automagical 関数を使用してクエリを作成しますが、これは非常に悪質です。クエリは呼び出し時に直接実行されます。
array(
'conditions' => array('Model.field' => $thisValue), //array of conditions
'recursive' => 1, //int
//array of field names
'fields' => array('Model.field1', 'DISTINCT Model.field2'),
//string or array defining order
'order' => array('Model.created', 'Model.field3 DESC'),
'group' => array('Model.field'), //fields to GROUP BY
'limit' => n, //int
'page' => n, //int
'offset' => n, //int
'callbacks' => true //other possible values are false, 'before', 'after'
)
http://book.cakephp.org/2.0/en/models/retriving-your-data.html
Cake 3 内では、クエリはクエリ ビルダー オブジェクトを使用して構築されます。これにより、後続のすべての呼び出しで SQL が変更されます。呼び出した後にのみ実行されます。
$query = $articles->find('all')
->where(['Articles.created >' => new DateTime('-10 days')])
->contain(['Comments', 'Authors'])
->limit(10);
ここで、オブジェクトは、すべての呼び出し ( where
、contain
、limit
) で参照された SQL で操作されます。
execute()
、などを適用した後にクエリが実行されfirst()
、データセットが配列として返され、その他がオブジェクトとして返されます。toArray()
toArray()
さらに読む: http://book.cakephp.org/3.0/en/orm/retriving-data-and-resultsets.html