2011-03-23 45 views
1

我在CakePHP 1.3中构建了一个简单的FAQ系统,它将用户与他们提出的问题联系起来。CakePHP 1.3 - 检查数据库中是否存在用户电子邮件地址?

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

我的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 

我怎么会去这样做呢?

谢谢!

回答

4

那么在提交附加形式的

由$这个 - >数据[“问题”] [“电子邮件”]寻找合适的访客。

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

如果没有内容返回保存为新记录。

如果发现有游客一组$这个 - >数据[ '问题'] [ 'visitor_id']与主键

设置$这个 - >数据[ '游客'] [ '身份证']与主键(假设他们在相同的表格上添加访问者信息)然后保存。随着主键的存在,更新将在访问者上执行

+0

这非常有意义,我会放弃它,非常感谢! – Probocop 2011-03-23 13:57:19

+0

我没有给我的电子邮件列命名为'email',所以我不能使用findByEmail函数,但我通过执行以下操作获得了相同的结果:http://pastie.org/1704598 – Probocop 2011-03-23 16:42:28

+0

然后使用findByEmailaddress(),它的一种提取字段名称的神奇方法! http://book.cakephp.org/view/1026/findBy – Leo 2011-03-23 16:49:13

相关问题