次のSQLクエリをYii 2で実装しますが、成功しません。
これにより、一意の会社名の総数が得られます。
_SELECT count(DISTINCT(company_name)) FROM clients
_
そして、これは_company_name
_と_client code
_およびid(PK)
を表示するはずです:
_SELECT (DISTINCT(company_name,client_code)) FROM clients
_
これを達成する方法は?
私自身の質問に答えると、次の実用的なソリューションが得られました:
一意のcompany_name
:のカウントを取得
$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>';
}
}
これを試して:
$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,
]);
// ...
}
このサンプルがお役に立てば幸いです
$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)');