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');
 }
示例#2
0
 /**
  * @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();
 }
示例#3
0
 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 : [];
 }
示例#4
0
 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());
 }
示例#7
0
 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');
 }