2012-06-21 157 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