Yii2:如何编写不同的SQL查询?

JKL*_*KLM 21 php mysql yii2

我想在Yii 2中实现以下SQL查询,但没有成功.

这应该给出唯一公司名称的总数:

SELECT count(DISTINCT(company_name)) FROM clients
Run Code Online (Sandbox Code Playgroud)

这应该显示company_nameclient codeid(PK):

SELECT (DISTINCT(company_name,client_code)) FROM clients
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

Muh*_*zad 19

试试这个:

$total = YourModel::find()->select('company_name')->distinct()->count();
Run Code Online (Sandbox Code Playgroud)

在搜索模型中:

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,
    ]);
    // ...
}
Run Code Online (Sandbox Code Playgroud)


JKL*_*KLM 9

回答我自己的问题,我得到了以下工作解决方案:

得到了独特的数量company_name:

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

鲜明的名单company_nameclient_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>';
    }
}
Run Code Online (Sandbox Code Playgroud)