

CakePHPで会員登録フォームに入力されたメールアドレスに本会員登録用のリンクの貼られたメールを送りたいのですが、

[code]

    Error:SQLSTATE[42000]:Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getActiviationHash' at　line　1　SQL Query:getActiviationHash.
    
[/code]

というエラーが発生しています。

CakePHPの経験が浅く、突破口が掴めずにいます。  
どなたか以下のコードで問題箇所などが分かる方がいらっしゃったらご指摘頂きたいです。

[code]

    public $components = array('Auth');
    
    public function beforeFilter(){
        $this->Auth->allow('signup');
    }
    
    public function signup()
    {
        if($this->request->is('post')){
            if($this->User->save($this->data)){
                $url='activate/'.$this->User->id.'/'.$this->User->getActiviationHash();
                $url=Router::url($url,true);
    
                $email=new CakeEmail();
                $email->from(array('kentotamu@gmail.com' =>'Sender'));
                $email->to($this->data['User']['email']);
                $email->subject('Registration mail');
                $email->send($url);
    
                $this->Session->setFlash('Registration suceessful');
            }else{
                $this->Session->setFlash('Error');
            }
        }
    }
    
[/code]

Cake/conf/Email.php

[code]

    class EmailConfig {
    
    public $default = array(
        'transport' => 'Mail',
        'from' => 'you@localhost',
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    );
    
    public $smtp = array(
        'transport' => 'ssl://Smtp.gmail.com',
        'from' => array('site@localhost' => 'My Site'),
        'host' => 'localhost',
        'port' => 587,
        'timeout' => 30,
        'username' => 'root',
        'password' => 'root',
        'client' => null,
        'log' => false,
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    );
    
[/code]


CC BY-SA 4.0
2019-06-04T15:17:28.497
55519
2019-06-05T04:19:13.793
2019-06-05T03:11:32.273
34463
34463
question
mysql cakephp
CakePHPで本登録用のメールを送りたいです。


CakePHP 2.x のモデルクラスにおいて、実装されていないメソッドを呼び出した場合は、そのメソッド名でSQL文が構築されます。

Userクラスに、 `getActiviationHash`メソッドを実装しているのでしょうが、 `$this->User`
が、Userクラスではないため、このような事象となっています。  
確認のために、`debug(get_class($this->User))`などとして、クラス名を確認してみてください。`AppModel`クラスとなっているはずです。

CakePHP
2.xのコントローラーでは、デフォルトでコントローラー名の単数形のモデルが使用できるようになっていますが、その呼び出し時にモデルクラスが規約に沿った場所になく見つからない場合は、`AppModel`クラスが代替として使用されます。

Userクラスが規約に添った場所（`app/Model/User.php`）として配置されているか確認してください。


CC BY-SA 4.0
2019-06-05T04:11:06.980
55540
2019-06-05T04:19:13.793
2019-06-05T04:19:13.793
2668
2668
55519
answer