Scalr\Model\Entity\Role::save PHP Méthode

save() public méthode

public save ( )
    public function save()
    {
        $this->db()->BeginTrans();
        try {
            parent::save();
            $this->db()->Execute("DELETE FROM `role_behaviors` WHERE `role_id` = ?", [$this->id]);
            $sql = $args = [];
            foreach ($this->getBehaviors() as $behavior) {
                $sql[] = '(?, ?)';
                $args = array_merge($args, [$this->id, $behavior]);
            }
            if (count($sql)) {
                $this->db()->Execute("INSERT INTO `role_behaviors` (`role_id`, `behavior`) VALUES " . join(', ', $sql), $args);
            }
            $this->db()->CommitTrans();
        } catch (\Exception $e) {
            $this->db()->RollbackTrans();
            throw $e;
        }
    }

Usage Example

 protected function run8($stage)
 {
     $knownOses = [];
     //Retrieves the list of all known OSes
     foreach (Entity\Os::all() as $os) {
         /* @var $os Entity\Os */
         $knownOses[$os->id] = $os;
     }
     $role = new Entity\Role();
     //Trying to clarify the operating system of the Roles using Images which are associated with them.
     //If all Images have the same operating system it will be considered as acceptable for the Role at latter will be updated.
     $rs = $this->db->Execute("\n            SELECT " . $role->fields('r', true) . ", GROUP_CONCAT(t.os_id) `osids`\n            FROM roles r JOIN (\n                SELECT DISTINCT ri.role_id, i.os_id\n                FROM images i\n                JOIN role_images ri ON i.id = ri.image_id\n                    AND i.platform = ri.platform\n                    AND i.cloud_location = ri.cloud_location\n            ) t ON t.role_id = r.id\n            WHERE r.os_id = ?\n            GROUP BY r.id\n            HAVING osids != r.os_id\n        ", ['unknown-os']);
     if ($rs->RecordCount()) {
         $this->console->out("Found %d Roles the OS value of which can be filled from the Images. Updating...", $rs->RecordCount());
     }
     while ($row = $rs->FetchRow()) {
         $role = new Entity\Role();
         $role->load($row, 'r');
         if (!empty($row['osids'])) {
             if (isset($knownOses[$row['osids']])) {
                 //Updating OS value of the Role
                 $role->osId = $row['osids'];
                 $role->save();
             } else {
                 $this->console->warning("Role %s (%d) is associated with the Images with either different or unknown OS: %s", $role->name, $role->id, $row['osids']);
             }
         }
     }
     $image = new Entity\Image();
     //Trying to clarify the operating sytem of the Images using Roles which are associated with them.
     $rs = $this->db->Execute("\n            SELECT " . $image->fields('i', true) . ", GROUP_CONCAT(t.os_id) `osids`\n            FROM images i JOIN (\n                SELECT DISTINCT ri.image_id, ri.platform, ri.cloud_location, r.os_id\n                FROM roles r\n                JOIN role_images ri ON ri.role_id = r.id\n            ) t ON t.image_id = i.id AND t.platform = i.platform AND t.cloud_location = i.cloud_location\n            WHERE i.os_id = ?\n            GROUP BY i.hash\n            HAVING osids != i.os_id\n        ", ['unknown-os']);
     if ($rs->RecordCount()) {
         $this->console->out("Found %d Images the OS value of which can be filled from the Roles. Updating...", $rs->RecordCount());
     }
     while ($row = $rs->FetchRow()) {
         $image = new Entity\Image();
         $image->load($row, 'i');
         if (!empty($row['osids'])) {
             if (isset($knownOses[$row['osids']])) {
                 //Updating OS value of the Image
                 $image->osId = $row['osids'];
                 $image->save();
             } else {
                 $this->console->warning("Image (%s) imageId: %s, platform: %s, cloudLocation: %s is associated with the Roles with either different or unknown OS: %s", $image->hash, $image->id, $image->platform, $image->cloudLocation, $row['osids']);
             }
         }
     }
 }
All Usage Examples Of Scalr\Model\Entity\Role::save