APIv4 - Default to saving and deleting DAO records in bulk
[civicrm-core.git] / CRM / Core / DAO.php
index 506a971ba72ada0069624873e40614d202ab14eb..0e901cdc4235fe6b01bf734110af07f40a2efbcf 100644 (file)
@@ -888,7 +888,7 @@ class CRM_Core_DAO extends DB_DataObject {
    *
    * @param array $record
    *
-   * @return $this
+   * @return static
    * @throws \CRM_Core_Exception
    */
   public static function writeRecord(array $record): CRM_Core_DAO {
@@ -908,12 +908,27 @@ class CRM_Core_DAO extends DB_DataObject {
     return $instance;
   }
 
+  /**
+   * Bulk save multiple records
+   *
+   * @param array[] $records
+   * @return static[]
+   * @throws CRM_Core_Exception
+   */
+  public static function writeRecords(array $records) {
+    $results = [];
+    foreach ($records as $record) {
+      $results[] = static::writeRecord($record);
+    }
+    return $results;
+  }
+
   /**
    * Delete a record from supplied params.
    *
    * @param array $record
    *   'id' is required.
-   * @return CRM_Core_DAO
+   * @return static
    * @throws CRM_Core_Exception
    */
   public static function deleteRecord(array $record) {
@@ -937,6 +952,21 @@ class CRM_Core_DAO extends DB_DataObject {
     return $instance;
   }
 
+  /**
+   * Bulk delete multiple records.
+   *
+   * @param array[] $records
+   * @return static[]
+   * @throws CRM_Core_Exception
+   */
+  public static function deleteRecords(array $records) {
+    $results = [];
+    foreach ($records as $record) {
+      $results[] = static::deleteRecord($record);
+    }
+    return $results;
+  }
+
   /**
    * Check if there is a record with the same name in the db.
    *