Je veux implémenter les requêtes SQL suivantes dans Yii 2 mais sans succès.
Cela devrait donner le nombre total de noms d'entreprise uniques:
SELECT count(DISTINCT(company_name)) FROM clients
Et cela devrait afficher company_name
Avec client code
Et id(PK)
:
SELECT (DISTINCT(company_name,client_code)) FROM clients
Comment y parvenir?
En répondant à ma propre question, j'ai obtenu les solutions de travail suivantes:
Vous avez le décompte de l'unique company_name
:
$my = (new yii\db\Query())
->select(['company_name',])
->from('create_client')
->distinct()
->count();
echo $my;
Liste des company_name
et 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>';
}
}
Essaye ça:
$total = YourModel::find()->select('company_name')->distinct()->count();
Dans le modèle de recherche:
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,
]);
// ...
}
J'espère que cet échantillon vous sera utile
$names = Yii::$app->db->createCommand('SELECT count(DISTINCT(company_name)) as name FROM clients')
->queryAll();
pour accéder aux données
foreach ($names as $name){
echo $name['name'];
}
Tout a bien fonctionné
return Clients::find()->count('DISTINCT(company_name)');