\ Phalcon \ Mvc \ Model \ Validator \名称空间的唯一性

时间:2012-09-21 15:29:13

标签: phalcon

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

  

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

1 个答案:

答案 0 :(得分:1)

文档说明如果使用名称空间,则必须实现返回表名的方法。

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

setSource仅更改单个实例的映射表,而实现getSource则使源可用于创建的每个实例。