CakePHP 1.3-检查数据库中是否存在用户电子邮件地址?

CakePHP 1.3-检查数据库中是否存在用户电子邮件地址?,cakephp,Cakephp,我正在CakePHP1.3中构建一个简单的FAQ系统,它将用户与他们提出的问题联系起来 我遇到的问题是,如果同一个用户问了另一个问题(没有登录或帐户),我不想在数据库中为该用户创建另一个条目(基于他们的电子邮件地址是否存在),而只是将该用户ID分配给该问题 我的add()函数当前如下所示: function add() { if(!empty($this->data)) { unset($this->Question->Visitor-&

我正在CakePHP1.3中构建一个简单的FAQ系统,它将用户与他们提出的问题联系起来

我遇到的问题是,如果同一个用户问了另一个问题(没有登录或帐户),我不想在数据库中为该用户创建另一个条目(基于他们的电子邮件地址是否存在),而只是将该用户ID分配给该问题

我的add()函数当前如下所示:

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
我的数据库结构如下:

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
我该怎么做呢


谢谢

提交add表格时,注意

通过$this->data['Question']['email']搜索合适的访问者

$this->Question->Visitor->findByEmail($this->data['Question']['email']);
如果未返回任何内容,则另存为新记录

如果您找到一个访问者,请使用主键设置$this->data['Question']['visitor\u id']


使用主键设置$this->data['Visitor']['id'](假设他们在同一表单上添加访客信息),然后保存。在提交add表单时,如果存在主键,将对访问者执行更新

通过$this->data['Question']['email']搜索合适的访问者

$this->Question->Visitor->findByEmail($this->data['Question']['email']);
如果未返回任何内容,则另存为新记录

如果您找到一个访问者,请使用主键设置$this->data['Question']['visitor\u id']


使用主键设置$this->data['Visitor']['id'](假设他们在同一表单上添加访客信息),然后保存。由于在中存在主键,将对访问者执行更新

我没有将我的电子邮件列命名为“电子邮件”,因此我无法使用findByEmail函数,但我通过以下操作实现了相同的结果:然后使用findByEmailaddress(),这是一种提取字段名的神奇方法!我没有将我的电子邮件列命名为“email”,因此我无法使用findByEmail函数,但我通过执行以下操作获得了相同的结果:然后使用findByEmailaddress(),这是一种提取字段名的神奇方法!