php phalcon MVC模型如何删除数据?

cyvaqqii  于 2022-12-02  发布在  PHP
关注(0)|答案(3)|浏览(197)

我在网上找了很长时间,但没有运气。请帮助或尝试给予一些想法如何实现这一点。
我想删除一些数据,例如:

$articleIds = '1,2,3,5,8';
$User    = new User();
$success = $User->delete($articleIds);

但是,这会产生错误。我该怎么办?
先谢谢你。

voj3qocg

voj3qocg1#

请尝试以下任一种删除多个记录的方法,然后选择您最喜欢的一个:
A)查找并删除:

$ids = '1,2,3';
$records = User::find(sprintf("id IN (%s)", $ids)); // or you can avoid using sprintf and simply use concatenating operator like "IN (" . $ids . ")"
$records->delete(); // this should return boolean

B)您还可以链接上述方法调用:

User::find(sprintf("id IN (%s)", $ids))->delete();

C)或者,您可以迭代每条记录,然后将其删除,如Phalcon文档中所示:https://docs.phalconphp.com/en/3.2/db-models#delete-records
D)最后,您可以使用Phalcon PHQL编写一个“原始”SQL语句:

$config = [
    'host' => '127.0.0.1',
    'username' => 'user',
    'password' => 'pass',
    'dbname' => 'test'
];
$connection = new \Phalcon\Db\Adapter\Pdo\Mysql($config);
$sql = sprintf("DELETE `users` WHERE `id` IN (%s)", $ids);
$success = $connection->execute($sql);

更多信息,请访问:https://docs.phalconphp.com/en/3.2/db-layer#crud
请记住...接受用户输入的记录ID时要非常非常小心(例如:通过GET,或者从允许用户选择记录的窗体/表)。但我认为这是另一个问题的主题。

nfzehxib

nfzehxib2#

首先清理输入,确保id数组只接受int变量,然后使用下面的代码删除所有记录。

$ids = [1, 2, 3];
$records = User::find([
    'conditions' => 'id IN (:ids:)',
    'bind' => array('ids' => implode(', ', $ids)),
]);
$records->delete();
yi0zb3m4

yi0zb3m43#

$models = VoucherThemeModel::find([
  'conditions' => 'voucher_theme_id IN ({ids:array})',
  'bind' => ['ids' => $voucher_ids]
]);

$models->delete();

相关问题