我想知道是否可以在phalcon ODM中批量刪除(使用單一操作),而不是通過'delete()'方法獲取文檔並在循環中逐個刪除這些文檔?Phalcon ODM批量刪除
我需要的是這樣的:
$db->users->remove(array("type" => "abc"));
官方文件說,這件事沒有什麼,以及傾銷類方法顯示沒有新的信息。
PS。我使用爾康2.0.10
我想知道是否可以在phalcon ODM中批量刪除(使用單一操作),而不是通過'delete()'方法獲取文檔並在循環中逐個刪除這些文檔?Phalcon ODM批量刪除
我需要的是這樣的:
$db->users->remove(array("type" => "abc"));
官方文件說,這件事沒有什麼,以及傾銷類方法顯示沒有新的信息。
PS。我使用爾康2.0.10
有人在問,分享我使用
我創建了一個方法,模型庫的方法。所有其他模型擴展它,所以他們可以訪問它的方法。我正在使用靜態函數爲了不創建類的一個實例。
class ModelBase extends \Phalcon\Mvc\Collection
{
public static function deleteBulk(array $conditions)
{
$class = get_called_class();
$model = new $class;
$collection = $model->getSource();
# I have a registered service mongo in DI, so i just get it from there
$mongo = \Phalcon\Di::getDefault()->getMongo();
return $mongo->$collection->remove($conditions);
}
}
然後,我有一個模型:
class Items extends ModelBase
{
}
所以,當我需要批量刪除,我只要致電:
Items::deleteBulk(array("type" => "abc"));
如果你在模型中重命名了你的表格?在基本模型中調用'$ this-> getSource()'而不是'explode'更容易嗎? – Timothy
你是對的,謝謝,現在將編輯 –
我也想知道是相同的,但是,經過一番搜索我沒有找到任何東西。也許作爲一個計劃B,你總是可以在一個BaseModel中接受Collection和WhereClause作爲參數並迭代結果集。就像這裏的文檔中的示例:https://docs.phalconphp.com/en/latest/reference/odm.html#deleting-records讓我們希望別人有更好的解決方案:) –
作爲我已經創建的解決方法一個方法和直接使用mongoclient'remove()',但真的很期待一些不太髒的東西) –
嗨尤金蘇,請你分享你的方法,並告訴我們在哪個文件中請把它:) –