SilverStripe 3.1 or newer
Database: MySQL 5+, SQLite3, Postgres 8.3, SQL Server 2008
Relational Tags w/ Extension
class Tag extends DataObject {
static $ db = array (
'Title' => 'Varchar(200)' ,
);
static $ belongs_many_many = array (
'BlogPosts' => 'BlogPost'
);
}
BlogPost :
extensions :
- TaggableExtension
class BlogPost extends DataObject {
static $ many_many = array (
'BlogTags' => 'BlogTag'
);
}
class BlogTag extends DataObject {
static $ db = array (
'Title' => 'Varchar(200)' ,
);
static $ belongs_many_many = array (
'BlogPosts' => 'BlogPost'
);
}
$ field = new TagField (
'BlogTags' , 'Blog Tags' , BlogTags ::get (), $ post ->BlogTags ()
);
$ field ->setShouldLazyLoad (true ); // tags should be lazy loaded
$ field ->setCanCreate (true ); // new tag DataObjects can be created
class BlogPost extends DataObject {
static $ db = array (
'Tags' => 'Text'
);
}
$ field = new StringTagField (
'BlogTags' , 'Blog Tags' , array ('one' , 'two' ), explode(',' , $ post ->Tags )
);
$ field ->setShouldLazyLoad (true ); // tags should be lazy loaded