【问题标题】:Sort order by multiple fields Magento Custom collection按多个字段排序 Magento 自定义集合
【发布时间】:2017-07-04 10:00:19
【问题描述】:

这是我的表结构:

+----+---------------------+
| id | event_date          |
+----+---------------------+
| 12 | 2017-07-03 01:12:00 |
| 42 | 2017-07-04 18:13:00 |
| 52 | 2017-07-22 23:52:00 |
| 62 | 2017-10-20 23:55:00 |
+----+---------------------+
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| status     | tinyint(2)   | NO   |     | 0       |                |
| content    | text         | NO   |     | NULL    |                |
| event_date | datetime     | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

我想获取最新的两条记录,日期顺序为升序。

以下是我正在使用的代码:

$collection = Mage::getModel("blogpromo/blogpromo")->getCollection()
        ->addFieldToFilter('status', 0)
        ->setOrder('id', 'DESC')
        ->setOrder('event_date', 'ASC')
        ->setPageSize(2);

它正在使用 ID 提供记录。我想使用这两个字段进行排序。 虽然,当我尝试仅使用日期进行排序时,它工作正常。

【问题讨论】:

  • 如果有人提供 raq mysql 查询会很有帮助。我正在使用以下但它也不起作用:SELECT id,event_date FROM blog_promo ORDER BY event_date ASC, id DESC LIMIT 2;

标签: mysql magento sql-order-by magento-1.9


【解决方案1】:

你可以使用addAttributeToSort()

$collection = Mage::getModel("blogpromo/blogpromo")->getCollection()
    ->addFieldToFilter('status', 0)
    ->addAttributeToSort('id', 'DESC')
    ->addAttributeToSort('event_date', 'ASC')
    ->setPageSize(2);

【讨论】:

  • 我没有使用 eav。因为 addAttributeToSort 用于 eav 而不是平面模型。
猜你喜欢
  • 2018-01-25
  • 2011-08-08
  • 2015-10-01
  • 2012-03-13
  • 1970-01-01
  • 2017-07-30
  • 2020-07-19
  • 2012-12-20
  • 2013-09-10
相关资源
最近更新 更多