2012-06-21 101 views
0

我的代码如下。我有一个数组,并通过使用这个数组填充数据库表。如果表中存在某个id,我更新它的行,如果id不存在,那么我创建行并将数据写入行。CakePHP数据库查询for循环

我清空表,然后运行该代码:

$arrayOfIds=array('1234', '5678'); 

foreach ($arrayOfIds as $twitter_user_id) { 
    $this->ModelName->twitter_user_id = $twitter_user_id; 
    if ($this->ModelName->exists()) { 
     echo "$twitter_user_id exists<br>"; 
    } else { 
     echo "$twitter_user_id not exists<br>"; 
     $this->ModelName->create(array ('twitter_user_id' => $twitter_user_id)); 
    } 

    $data = array(
     'ModelName' => array(
      'age' => 15, 
      'last_status' => 'online' 
     )); 

    $this->ModelName->save($data); 
} 

结果被回显到屏幕:
1234不存在
5678存在

当我检查表,2行(twitter_user_id = 1234和twitter_user_id = 5678)被添加到表格中。

当我重新运行我的代码以表两个条目,我也得到这样的回应:
1234不存在
5678存在

难道我错过了什么?

+0

除非y你是否使用了插件中的模型(也许是Twitter的一个模型?),而你没有显示它,它应该是'$ this-> ModelName-> id'来检查它是否存在。 – jeremyharris

回答

0

我认为存在()函数工作不喜欢你所想那一定是:)

我会改变这一行:

if ($this->ModelName->exists()) { 

是这样的:

if ($this->ModelName->find()) { 

如果它不按需要工作,请添加一些条件来查找函数..关于您的twitter_user_id

+0

是的,find()没有解决。我解决了这个问题:** $ exists = $ this-> ModelName-> find('all',array('conditions'=> array('ModelName.twitter_user_id'=> $ twitter_user_id))); ** – trante