Trait luya\admin\traits\TaggableTrait
Implemented by | luya\admin\models\StorageFile, luya\cms\models\Nav |
---|---|
Available since version | 1.2.2 |
Source Code | https://github.com/luyadev/luya-module-admin/blob/master/src/traits/TaggableTrait.php |
Tag Trait.
This trait can be assigned in order to read the tag data for an ActiveRecord model.
See {{luya\admin\aws\TaggableActiveWindow}} order to atach the TagActiveWindow.
When the TagsTrait is attached to an {{luya\admin\ngrest\base\NgRestModel}} use the trait as below:
$tags = Model::findOne(1)->tags;
Or you can also get all tags assigned for this table:
$allTags = Model::findTags();
Since getTags()
is a relation you can also preload those tag informations within a model like:
foreach (News::find()->with(['tags'])->all() as $news) {
var_dump($news->tags);
}
To get all records with one or more tags matching:
`
php
$matchTags = [1, 2, 3];
Model::find()
->joinWith(['tags'])
->andWhere(['in', 'tag_id', $matchTags])
->all();
Public Methods
Method | Description | Defined By |
---|---|---|
cleanBaseTableName() | Remove brackes from the table name, this makes sure the table name also works if the db prefix changes. | luya\admin\traits\TaggableTrait |
findTags() | Get all tags associated with this table. | luya\admin\traits\TaggableTrait |
getTags() | Returns all related tag for the current active record item. | luya\admin\traits\TaggableTrait |
Method Details
Remove brackes from the table name, this makes sure the table name also works if the db prefix changes.
public static string cleanBaseTableName ( $tableName ) | ||
$tableName |
public static function cleanBaseTableName($tableName)
{
return str_replace(['{{%', '}}'], '', $tableName);
}
Get all tags associated with this table.
public static luya\admin\models\Tag findTags ( ) | ||
return | luya\admin\models\Tag |
An active record array from tag model. |
---|
public static function findTags()
{
return Tag::findRelationsTable(static::cleanBaseTableName(static::tableName()));
}
Returns all related tag for the current active record item.
public luya\admin\models\Tag getTags ( ) | ||
return | luya\admin\models\Tag |
An active record array from tag models |
---|
public function getTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])->viaTable('{{%admin_tag_relation}}', ['pk_id' => 'id'], function ($query) {
$query->onCondition(['table_name' => static::cleanBaseTableName(static::tableName())]);
});
}