1

在将 \Phalcon\Mvc\Model\Validator\Uniqueness 验证器与作为命名空间的模型一起使用时,我得到以下 Phalcon\Db\Exception。看起来验证器类在构建支持查询时没有使用模型中的 getSource 方法。

您的 SQL 语法有错误;在执行 SELECT COUNT(*) AS rowcount FROM app\ 时,检查与您的 MySQL 服务器版本相对应的手册以在 app\dao\users 附近使用正确的语法 WHERE username = 'nhidalgo' AND id <> ''' at line 1 dao\users WHERE 用户名 = '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 回答