2015-10-16 39 views
0

我得到一个“没有收到任何数据”(ERR_EMPTY_RESPONSE)用下面的代码:CakePHP的:没有数据接收

/** 
* afterFind - anytime Cake finds an entry in the DB 
* automatically fill in "sendto" field 
* this contains all of the email addresses for the member 
* 
* return @results 
*/ 
public function afterFind($results, $primary = false) { 
    foreach ($results as $key => $val) { 
     if (isset($val['Member']['id'])) { 
      $results[$key]['Member']['sendto'] = $this->getEmailsByMemberId($val['Member']['id']); 
     } 
    } 
    return $results; 
} 

/* 
* Get a list of email addresses for the user 
* For now, return a dummy list 
* 
*/ 
public function getEmailsByMemberId($memberId) { 
     $this->contain(); 

     $member = $this->find('first', array('conditions' => array('id' => $memberId))); 
     if(! $member) { 
       return false; 
     } 

     $emails = $member['Member']['email']; 

     if(isset($member['Member']['work_email'])) { 
       $emails .= ";" . $member['Member']['work_email']; 
     } 

     return $emails; 
} 

它与getEmailsByMemberID在$成员=调用(这样做)。如果我注释掉这一行,代码将无误地运行。任何想法,为什么我得到这个错误?基本上,我想检查数据库

+1

这似乎是一个永无止境的递归情况。在'find'之后,你可以调用'getEmailsByMemberId'来做另一个'find'。这不就是一个无限循环的'find'吗?另外,“sendto”不会更好地实现为虚拟领域吗? – AgRizzo

回答

1

正如AgRizzo告诉afterFind被调用很多次。您需要使用callbacks密钥在getEmailsByMemberId()中禁用afterFind回拨。

回调键允许您禁用或指定应该运行的回调。要在查找回调之前禁用查找&,请在选项中设置“callbacks”=> false。您还可以将回调选项设置为'之前'或'之后'以仅启用指定的回叫。

你可以阅读一下:http://api.cakephp.org/2.7/source-class-Model.html#2926-3004