2012-09-21 48 views
1

當使用命名空間模型使用\ Phalcon \ Mvc \ Model \ Validator \ Uniqueness驗證程序時,下面的Phalcon \ Db \ Exception得到了如下結果。看起來驗證器類在構建支持查詢時未使用模型中的getSource方法。 Phalcon Mvc Model Validator 名稱空間的唯一性

您的SQL語法錯誤;檢查 對應於您的MySQL服務器版本的手冊,以便在正確的語法中使用 附近的應用程序\ dao \用戶WHERE用戶名='nhidalgo'和ID <>'''在行 1執行SELECT COUNT(*)AS rowcount從應用程序\ DAO \用戶WHERE 用戶名= '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

的文檔指出,如果你使用的命名空間,你必須實現方法返回表名。

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

setSource只能改變映射表的一個實例,在實施getSource使得可用於創建的每個實例的來源。

相關問題