title: Design objects with save/delete/update functionality
body: <p>I am using Cassandra with heavy denormalization so I cannot use some kind of universal class to delete/add/update/etc.. objects since every type of object has its own list of tables that needs to be changed.</p>
  
  <p>For example to delete <code>User</code> I will need to touch 3 tables, not just one. To delete <code>Item</code> I will need to touch 7 tables, etc.. It means that logic is completely different based on object type.</p>
  
  <h1>Scenario 1</h1>
  
  <p>User class contains only fields that I need (id, name, etc..) and static functions to find users, delete users etc..</p>
  
  <pre><code>&lt;?php
  
  class User {
      private $id;
      private $name;
      // Magic getters and setters removed to save space here
  
      public static function delete($id) {
          // find user by id
          // delete that user
      }
  }
  </code></pre>
  
  <h1>Scenario 2</h1>
  
  <p>User class has everything - fields (id, name, etc..) and also functions that will delete/edit/create/etc.. that particular user</p>
  
  <pre><code>&lt;?php
  
  class User {
      private $id;
      private $name;
      // Magic getters and setters removed to save space here
  
      public function delete() {
          // find user by $this-&gt;id
          // delete that user
      }
  }
  </code></pre>
  
  <p>Which scenario is better and maybe there is some other way to do this that is even better?</p>