public function insert(Article $article)
 {
     $newArticle = $this->db->table(self::TABLE_NAME)->insert(array(self::COLUMN_TITLE => $article->title, self::COLUMN_CONTENT => $article->content, self::COLUMN_PUBLISHED_AT => $article->publishedAt, self::COLUMN_LAST_MODIFIED_AT => $article->lastModifiedAt, self::COLUMN_DISPLAYED => $article->displayed, self::COLUMN_VISIBLE => $article->visible, self::COLUMN_URL => $article->url, self::COLUMN_USER => $article->user->id, self::COLUMN_PHOTO => $article->photo->id, self::COLUMN_DELETED => false));
     $article->setId($newArticle->id);
     $article->setUrl();
     $newArticle->update(array(self::COLUMN_URL => $article->url));
     $this->insertCategories($article, $article->categories);
     $this->insertTags($article, $article->tags);
     return $article->id;
 }
 public static function loadFromDb(DbEntry $article)
 {
     $instance = new Article();
     $instance->setId($article->id);
     $instance->setTitle($article->title);
     $instance->setContent($article->content);
     $instance->setPublishedAt($article->published_at);
     if ($article->last_modified_at) {
         $instance->setLastModifiedAt($article->last_modified_at);
     }
     $instance->setDisplayed($article->displayed);
     $instance->setVisible($article->visible);
     $instance->setUrl($article->url);
     $instance->setUser(UserService::loadFromDb($article->user));
     $instance->setPhoto(PhotoService::loadFromDb($article->photo));
     $instance->setTags(self::loadTagsFromDb($article));
     $instance->setCategories(self::loadCategoriesFromDb($article));
     $instance->setComments(self::loadCommentsFromDb($article));
     return $instance;
 }