1

名前空間であるモデルで\Phalcon\ Mvc \ Model \ Validator \ Uniquenessバリデーターを使用すると、以下のPhalcon \ Db\Exceptionが発生します。サポートするクエリを作成するときに、バリデータークラスがモデルのgetSourceメソッドを使用していないようです。

SQL構文にエラーがあります。SELECT COUNT(*)AS rowcount FROM app \を実行するときに、1行目でapp \ dao \ users WHERE username ='nhidalgo' AND id <>'''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 dao \ users WHERE username ='nhidalgo' AND id <>''

私のコードは次のとおりです。

<?php
namespace App\Dao;

use Phalcon\Mvc\Model\Validator\Inclusionin;
use Phalcon\Mvc\Model\Validator\Uniqueness;

class Users extends \Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->setSource('users');
    }

    public function validation()
    {
        $this->validate(new Uniqueness(
            array(
                "field"   => "username",
                "message" => "Username must be unique"
            )
        ));
        $this->validate(new Uniqueness(
            array(
                "field"   => "email",
                "message" => "Email must be unique"
            )
        ));

        return !$this->validationHasFailed();
    }
}
4

1 に答える 1

1

ドキュメントには、名前空間を使用する場合は、テーブル名を返すメソッドを実装する必要があると記載されています。

public function getSource()
{
    return 'users';
}

setSourceは、単一インスタンスのマップされたテーブルのみを変更しますが、getSourceを実装すると、作成されたすべてのインスタンスでソースを使用できるようになります。

于 2012-09-21T15:31:37.580 に答える