2012-10-26 49 views
0

我使用笨,想刪除一個環刪除當前項目中的對象用foreach - 笨

foreach($query->result() as $row){ 
    if($row->parent_id == 1){ 
     // code here to delete current record 
    } 
} 

我想使用的foreach循環的所有記錄從對象的項目。如果if中的當前項滿足條件,則刪除$ query對象中的當前行。

我可以刪除CodeIgniter中$ query對象中的當前記錄還是有其他方法可以執行此操作?

回答

4

在循環

$query = $this->db->query("YOUR QUERY"); 
$rows = $query->result(); 
foreach ($rows as $key => $row) 
{ 
    if($row->parent_id == 1){ 
     unset($rows[$key]); 
    // code here to delete current record 
    } 
} 

print_r($rows) // remove row with parent_id = 1 

查看更多@Removing an item from object in a loop

你也可以改變你的SELECT語句來獲得所有記錄對象中的項目,其中PARENT_ID不均衡1(或其他「其中'過濾行的邏輯...查看示例和鏈接如下)

$this->db->get('mytable') 
$this->db->where('parent_id !=', 1); 

//get all except parent id 1,4 or 7 
$parent_ids = array(1, 4, 7); 
$this->db->where_not_in('parent_id', $parent_ids); 

從數據庫中刪除記錄爲您剛纔的問題標題建議(刪除當前記錄CI中的foreach)

爲此,您可以使用SQL查詢,而無需使用任何PHP邏輯通過寫的條件在SQL ...多見於http://codeigniter.com/user_guide/database/active_record.html

例如

//delete record where parent_id = 1 
$this->db->delete('mytable', array('parent_id' => 1)); 

//delete record where parent_id = 1 or 5 or 8 
$names = array(1, 5, 8); 
$this->db->where_in('parent_id', $names); 
$this->db->delete('mytable'); 

//delete record where parent_id = 1 
$this->db->where('parent_id', 1); 
$this->db->delete('mytable'); 

//delete all record where parent_id not eq 1 
$this->db->where('parent_id !=', 1); 

//delete all record where parent_id less than 10 
$this->db->where('parent_id <', 10); 
+0

我不想刪除表中的數據,但記錄在php codeigniter代碼中的$ query中 –

+0

@ KH-DP我剛剛更新了我的代碼,您正嘗試「從循環中的對象中刪除項目」.. 。請參閱http://stackoverflow.com/questions/7843157/removing-an-item-from-object-in-a-loop –

+0

它仍然無法刪除。如果在普通代碼中可能工作,但它在CodeIgniter中 –

1

做一個倒置的把它添加到一個新的數組:

$new_result = array(); 

foreach($query->result() as $row){ 
    if($row->parent_id != 1){ 
     $new_result[] = $row; 
    } 
} 

與$ new_result對象,下班後。

ps:過濾SQL查詢中的行不是更容易嗎?

+0

我有20多個類別作爲菜單項,並有三個級別的菜單。如果我通過連接到數據庫過濾意味着:一個查詢選擇父菜單項,然後循環超過20次子菜單項,然後循環子子菜單項 –

+0

好吧,我想你想這個:http ://堆棧溢出。com/questions/8840319/build-a-tree-from-a-flat-array-in-php – fccotech

+0

謝謝fccotech爲你的遞歸函數 –

相關問題