protected function joinTables() { /** @var ActiveRecord $model */ $model = new $this->owner->modelClass(); /** @var ActiveRecord $this->owner */ $this->getQuery()->leftJoin($this->taxonomy->table, $this->taxonomy->table . '.object_id = ' . $model::tableName() . '.id')->leftJoin(TaxonomyTerms::tableName(), TaxonomyTerms::tableName() . '.id = ' . $this->taxonomy->table . '.term_id'); }
/** * @param array $tags * @return \yii\base\Component */ public function hasTags($tags = []) { $this->joinTables(); if (!empty($tags)) { $this->getQuery()->andFilterWhere([TaxonomyTerms::tableName() . '.term' => $tags]); } return $this->getQuery(); }
public function getTerms($object_id, $name = []) { $query = (new Query())->select(TaxonomyTerms::tableName() . '.term, ' . $this->getTable() . '.value')->from(TaxonomyTerms::tableName())->innerJoin($this->getTable(), $this->getTable() . '.term_id = taxonomy_terms.id and ' . $this->getTable() . '.object_id=:object_id', [':object_id' => $object_id])->andFilterWhere([TaxonomyTerms::tableName() . '.term' => $name]); foreach ($query->all() as $v) { $result[$v['term']] = $v['value']; } return isset($result) ? $result : []; }
public function getTerms($object_id, $name = []) { $query = (new Query())->select(TaxonomyTerms::tableName() . '.term')->from(TaxonomyTerms::tableName())->innerJoin($this->table, $this->table . '.term_id = taxonomy_terms.id and ' . $this->table . '.object_id=:object_id', [':object_id' => $object_id])->andFilterWhere(['taxonomy_terms.term' => $name]); $result = []; foreach ($query->all() as $v) { $result[] = $v['term']; } return $result; }
public function hasProp($name, $value = null) { $this->joinTables(); if (!empty($name)) { $this->getQuery()->andFilterWhere([TaxonomyTerms::tableName() . '.term' => $name]); } if (!empty($value)) { $this->getQuery()->andFilterWhere([$this->taxonomy->table . '.value' => $value]); } return $this->getQuery(); }
public function down() { $this->dropTable(TaxonomyTerms::tableName()); $this->dropTable(TaxonomyDef::tableName()); }
public function hasChildren($term) { $parentTerm = $this->getTaxonomyTerm($term); if (!$parentTerm) { return false; } return (new Query())->from(TaxonomyTerms::tableName())->where("parent_id = {$parentTerm->id}")->exists(self::getDb()); }
public function getTerms($object_id, $name = []) { $query = (new Query())->select(TaxonomyTerms::tableName() . '.term, ' . $this->getTable() . '.value')->from(TaxonomyTerms::tableName())->innerJoin($this->getTable(), $this->getTable() . '.term_id = taxonomy_terms.id and ' . $this->getTable() . '.object_id=:object_id', [':object_id' => $object_id])->andFilterWhere([TaxonomyTerms::tableName() . '.term' => $name]); return ArrayHelper::map($query->all(), 'term', 'value'); }