/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Tags::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'type' => $this->type]); $query->andFilterWhere(['like', 'name', $this->name]); return $dataProvider; }
/** * @param $type * @param $asArray * @param null $limit * @return array | $this */ public function getByType($type, $asArray, $limit = null) { $ans = Tags::find()->where(['=', 'type', $type])->indexBy('id'); if ($limit) { $ans->limit($limit); } if ($asArray) { $ans = $ans->asArray()->all(); $out = []; if (!empty($ans)) { foreach ($ans as $ind => $val) { $out[$ind] = $val['name']; } } return $out; } $ans->all(); return $ans; }
/** * @param $article_id * @param $tag_type * @param $asArray * @param null $limit * @return $this|string */ public function getLinkedTagsByType($article_id, $tag_type, $asArray, $limit = null) { $out = ""; $ans = Tags::find()->from(['contentmanager_content'])->join('INNER JOIN', 'contentmanager_tags_link', '`contentmanager_tags_link`.`link_id` = `contentmanager_content`.`id`')->join('INNER JOIN', 'contentmanager_tags', '`contentmanager_tags`.`id` = `contentmanager_tags_link`.`tag_id`')->select(['`contentmanager_tags`.*'])->indexBy('id')->where(['=', '`contentmanager_content`.`id`', $article_id])->andWhere(['=', '`contentmanager_tags`.`type`', $tag_type]); if ((int) $limit) { $ans->limit($limit); } if ($asArray) { $ans->asArray(); } $ans = $ans->all(); if ($asArray) { foreach ($ans as $ind => $val) { $out[$ind] = $val['name']; } return $out; } return $ans; }