Хотите реализовать следующие 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)');