CakePHP 1.3 - Проверка, существует ли адрес электронной почты пользователя в базе данных? - PullRequest
1 голос
/ 23 марта 2011

Я создаю простую систему FAQ в CakePHP 1.3, которая связывает пользователя с вопросом, который он задает.

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

Моя функция добавления () в настоящее время выглядит следующим образом:

function add() {
        if(!empty($this->data)) {
            unset($this->Question->Visitor->validate['visitor_id']);

            if ($this->Question->saveAll($this->data)) {
                $this->Session->setFlash(__('The question has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The question could not be saved. Please, try again.', true));
            }
        }
    }

И моя структура базы данных выглядит следующим образом:

Questions
    id
    visitor_id
    question
    url
    status_id
    category_id
    description
    keywords
    created
    modified

Visitors
    id
    name
    emailaddress
    newsletter
    ipaddress
    created
    modified

Как бы я поступил так?

Спасибо!

1 Ответ

4 голосов
/ 23 марта 2011

Хорошо при отправке формы добавления

Поиск подходящего посетителя по $ this-> data ['Question'] ['email'].

$this->Question->Visitor->findByEmail($this->data['Question']['email']);

Если ничего не возвращаетсясохранить как новую запись.

Если вы найдете посетителя, установите $ this-> data ['Question'] ['visitor_id'] с первичным ключом

Set $ ​​this-> data ['Посетитель'] ['id'] с первичным ключом (при условии, что они добавляют информацию о посетителе в той же форме), затем сохраните.При наличии первичного ключа обновление будет выполнено на посетителя

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