0

CodeIgniter を使用しており、ループ内のオブジェクトから項目を削除したい

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

foreach を使用してすべてのレコードをループしたいと考えています。ループ内の現在の項目が if の条件を満たす場合、$query オブジェクト内の現在の行を削除します。

CodeIgniter の $query オブジェクトの現在のレコードを削除できますか、それとも他の方法で削除できますか?

4

2 に答える 2

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

@ループ内のオブジェクトから項目を削除する

また、select ステートメントを変更して、parent_id が eq 1 ではないすべてのレコードを取得することもできます (または、行をフィルタリングする他の「where」ロジック...以下の例とリンクを参照してください)。

$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);

以前の質問のタイトルが示唆したように、データベースからレコードを削除するには (CodeIgniter で foreach を使用して現在のレコードを削除します)

これは、php ロジックを使用せずに SQL クエリを使用して行うことができます。SQL に条件を記述します。

//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); 
于 2012-10-26T04:50:56.433 に答える
1

反転して新しい配列に追加します。

$new_result = array();

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

その後、$new_result オブジェクトを操作します。

ps: SQL クエリで行をフィルター処理する方が簡単ではないでしょうか?

于 2012-10-26T06:48:52.530 に答える