【问题标题】:How to implement sql query in yii2 search model?yii2搜索模型中如何实现sql查询?
【发布时间】:2017-05-24 11:04:57
【问题描述】:

我有以下查询:

      SELECT hs.*FROM hire_screening hs 
      INNER JOIN (SELECT resume_id,MAX(created_date) AS MaxDateTime 
      FROM hire_screening GROUP BY resume_id) hire_screening 
      ON hs.resume_id = hire_screening.resume_id 
      AND hs.created_date = hire_screening.MaxDateTime

我试过这个:

   $query = HireScreening::find()
           ->select(["hs.resume_id","MAX(hs.created_date) AS MaxDateTime"])
           ->innerJoin('hire_screening as hs','hs.resume_id = hire_screening.resume_id')

          ->where(['hire_screening.created_date' => 'MaxDateTime'])
          ->orderBy(['(hs.created_date)' => SORT_DESC])
          ->groupBy(['hs.resume_id']);

当我使用 group by 时,结果会按照存储在表中的顺序显示每个“resume_id”的第一个值。根据 created_date,我只需要最新的不同 resume_id 。 如何在 yii2 搜索模型中实现这个查询?请帮忙。

【问题讨论】:

  • 请使用您此时尝试过的代码更新问题。请参阅How to ask 文章以改进您的问题。请记住,Stack Overflow 不是您的个人在线查询转换器。
  • 对不起。我是 Yii2 的初学者。所以请原谅任何错误。问题已更新。

标签: yii2 yii2-advanced-app


【解决方案1】:

如果你想执行原始的 sql 查询方式,那么你可以使用 创建命令函数。但它会返回数组,所以在网格中你应该使用数组数据提供者。

$array= Yii::$app->db->createCommand("
      SELECT hs.*FROM hire_screening hs 
      INNER JOIN (SELECT resume_id,MAX(created_date) AS MaxDateTime 
      FROM hire_screening GROUP BY resume_id) hire_screening 
      ON hs.resume_id = hire_screening.resume_id 
      AND hs.created_date = hire_screening.MaxDateTime")->queryAll();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多