0

以下をCiのアクティブレコード削除メソッドに変換できる必要がありますが、deleteステートメントでORを使用する方法がわかりません。これを正しく行う方法を教えてください。

$this->db->query("DELETE FROM friend WHERE userid_friends = '{$userid}' AND friendId_friends = '{$targetedUserId}' OR userid_friends = '{$targetedUserId}' AND friendId_friends = '{$userid}' ");
4

1 に答える 1

2

私はあなたがこれを試していると思います:

$this->db->query("DELETE FROM friend WHERE 
   ( userid_friends = '{$userid}' AND friendId_friends = '{$targetedUserId}')  OR 
   ( userid_friends = '{$targetedUserId}' AND friendId_friends = '{$userid}')  ");

(2つのAND句に追加された括弧に注意してください)

しかし実際には、CIの「DELETE」メソッドを使用していないのはクエリだけです。

アクティブレコードの削除を使用すると、次のようになります。

$this->db->where("userid_friends = '{$userid}' AND friendId_friends = '{$targetedUserId}'");
$this->db->or_where("userid_friends = '{$targetedUserId}' AND friendId_friends = '{$userid}'");
$this->db->delete('friend');

複雑なクエリのデバッグには、次を使用することをお勧めします

echo $this->db->last_query();

これは、Activerecordメソッドによって最終的なクエリがどのようにレンダリングされたかを正確に示しています。

于 2012-11-30T23:24:02.187 に答える