使用字段作为yii2中where条件的递归函数

时间:2018-05-31 12:40:06

标签: yii yii2 yii2-advanced-app

我想在 where()条件中发送df[['rank','url']] =pd.concat(df['ranks'].apply(literal_eval).apply(pd.io.json.json_normalize).tolist()).values # df[['rank','url']] =pd.concat(df['ranks'].apply(pd.io.json.json_normalize).tolist()).values # If you have lists with dict Keyword ranks search_type search_volume rank url 0 kw1 [{'rank': 1, 'url': "example.com"}] 1 500 1 example.com 1 kw1 [{'rank': 1, 'url': "example.com"}] 2 500 1 example.com 2 kw2 [{'rank': 2, 'url': "example.com"}] 1 1500 2 example.com 3 kw2 [{'rank': 2, 'url': "example.com"}] 2 1500 2 example.com 4 kw3 [{'rank': 1, 'url': "example.com"}] 1 60 1 example.com 5 kw3 [{'rank': 1, 'url': "example.com"}] 2 60 1 example.com date1功能的内容并返回结果。

注意:其实我想比较两个日期,我需要更改其中一个日期才能爆炸

这是我的代码:

exp

还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

exp是一个PHP函数,在andWhere中准备一个将在SQL服务器上运行的SQL查询。 SQL服务器上的SQL解析器无法执行PHP函数。你应该在这里使用MySQL DATE_FORMAT函数:

$promise = new ActiveDataProvider([
      'query' => Post::find()
         ->where('status = "show"')
         ->andWhere(['<=', 'DATE_FORMAT(date1, "%Y")', 'date2'])
      ->orderBy('id'),
   ]);

请更改字段date1date2的名称,以使其更具信息性。对于前者order_datedelivery_date等。

如果代码中经常使用status值,则应使用Post类的常量替换它们。

如果date2仅包含年份值,则最好使用YEAR类型。