private function filterRubrics(\yii\db\Query $query)
 {
     $rubric_ids = $this->getIds('rubric_ids');
     if ($rubric_ids) {
         $rubrics = Rubric::findRecursive($rubric_ids, 'down');
         $rubric_ids = array_merge($rubric_ids, ArrayHelper::getColumn($rubrics, 'id'));
         $sub_query = CompanyRubric::find()->select('company_rubric.company_id')->where(['company_rubric.rubric_id' => $rubric_ids]);
         $query->andWhere(['in', 'company.id', $sub_query]);
     }
 }
示例#2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getCompanyRubrics()
 {
     return $this->hasMany(CompanyRubric::className(), ['company_id' => 'id']);
 }
 private function distributeRubrics()
 {
     print_r("Distribute rubrics for company...");
     $companies = Company::find()->all();
     $rubrics = Rubric::findRecursive(array(), 'down', true);
     $rubrics_ids = ArrayHelper::getColumn($rubrics, 'id');
     $rubrics_ids_count = count($rubrics_ids);
     foreach ($companies as $company) {
         $this->faker->unique(true);
         $rubric_for_company_count = $this->faker->numberBetween(self::MIN_RUBRIC_FOR_COMPANY, self::MAX_RUBRIC_FOR_COMPANY);
         for ($i = 1; $i <= $rubric_for_company_count; $i++) {
             $company_rubric = new CompanyRubric();
             $company_rubric->company_id = $company->id;
             $company_rubric->rubric_id = $rubrics_ids[$this->faker->unique()->numberBetween(0, $rubrics_ids_count - 1)];
             $company_rubric->save();
         }
     }
     print_r("DONE" . PHP_EOL);
 }