Symfony framework - проверить существование записи в базе данных - PullRequest
0 голосов
/ 04 марта 2011

При использовании symfony framework, какой код лучше всего запрашивать в таблице базы данных, чтобы проверить, есть ли уже запись?

Мне нужен такой запрос:

$q = $this->createQuery('t')
    ->where('t.email = ?', $email)
    ->andWhere('t.type = ?','newsletter');

Ответы [ 2 ]

3 голосов
/ 04 марта 2011

Проще всего, если вы находитесь в экземпляре Doctrine_Table, который выглядит так:

$this->findOneByEmail($email);

Вам не нужно type, если вы используете конкретное наследование, потому что оно будетбыть добавлены с помощью обратного вызова DQL (при условии, что они включены), но для полноты:

$this->findOneByEmailAndType($email, 'newsletter');

Они вернут Doctrine_Record, если он существует, или ноль, если его нет.

Вы можететакже используйте счетчик для вашего запроса:

$exists = $this->createQuery('t')
    ->where('t.email = ?', $email)
    ->andWhere('t.type = ?','newsletter') // your probably don't need this
    ->count();

Это вернет либо количество записей, соответствующих запросу.Это более эффективно, так как не увлажняет результаты.

1 голос
/ 16 марта 2011

Попробуйте,

Вы можете напрямую определить в классе формы.


$this->validatorSchema['email'] = new sfValidatorAnd(array(
    new sfValidatorString(array('required' => true, 'trim' => true)),
    new sfValidatorDoctrineUnique(array('model'=>'User','column'=>'email'),
    array('invalid' =>'Email Address already exist')),                   
    new sfValidatorRegex(
    array('pattern' => '~^(\s)*[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})(\s)*$~i'), 
    array('invalid' => 'Please enter valid email ID'))),
    array(),
    array('required' =>'Please enter email ID')
);

Я думаю, что это намного проще, чем другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...