【问题标题】:\Phalcon\Mvc\Model\Validator\Uniqueness with namespaces\Phalcon\Mvc\Model\Validator\Uniqueness with namespaces
【发布时间】:2012-09-21 15:29:13
【问题描述】:

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

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

【问题讨论】:

    标签: phalcon


    【解决方案1】:

    文档指出,如果您使用命名空间,则必须实现返回表名的方法。

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2016-12-24
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      相关资源
      最近更新 更多