Yii2: Как написать отдельный sql-запрос?

Хотите реализовать следующие SQL-запросы в YII 2,

SELECT count(DISTINCT(company_name)) FROM clients 

Это должно дать общее количество уникальных фирменных наименований

А также

 SELECT (DISTINCT(company_name,client_code)) FROM clients 

и это должно отображать company_name с кодом клиента и id(PK)

как добиться этого?

Попробуй это

 $total = YourMOdel::find()->select('company_name')->distinct()->count(); 

в поисковой модели

 public function search($params) { $query = YourMOdel::find()->select('company_name')->distinct(); // or $query = YourMOdel::find()->select(['company_name', 'client_code'])->distinct(); $query->orderBy('id desc'); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); ... } 

Не испытано!

Отвечая на мой вопрос, я получил следующие рабочие решения:

Получил счет за уникальное имя_компании,

 $query = new Query; $my = (new yii\db\Query()) ->select(['company_name',]) ->from('create_client') ->distinct() ->count(); echo $my; 

И список отдельных company_name и client_code –

 $query = new yii\db\Query(); $data = $query->select(['company_name','client_code']) ->from('create_client') ->distinct() ->all(); if($data) { foreach($data as $row) { echo 'company_name: ' . $row['company_name'] . ' client_code: ' . $row['client_code'] . '<br>'; } } 

Я надеюсь, что этот образец полезен для вас

  $names = Yii::$app->$db->createCommand('SELECT count(DISTINCT(company_name)) as name FROM clients') ->queryAll(); 

для доступа к данным

 foreach ($names as $name){ echo $name['name']; } 

Все работало нормально

 return Clients::find()->count('DISTINCT(company_name)');