Yii2: Как написать отдельный sql-запрос?
Хотите реализовать следующие SQL-запросы в YII 2, но без успеха -
SELECT count(DISTINCT(company_name)) FROM clients
Это должно дать общее количество уникальных фирменных наименований
и
SELECT (DISTINCT(company_name,client_code)) FROM clients
и это должно отображаться имя_компании с кодом клиента и id(PK)
как добиться этого?
Ответы
Ответ 1
Отвечая на мой вопрос, я получил следующие рабочие решения:
Получено количество уникальных имен компаний,
$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>';
}
}
Ответ 2
Попробуйте это
$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,
]);
...
}
Не протестировано!
Ответ 3
Я надеюсь, что этот пример полезен для вас
$names = Yii::$app->$db->createCommand('SELECT count(DISTINCT(company_name)) as name FROM clients')
->queryAll();
для доступа к данным
foreach ($names as $name){
echo $name['name'];
}
Ответ 4
Все работало нормально
return Clients::find()->count('DISTINCT(company_name)');