首页 > 解决方案 > Zend Framework 1 数据库抽象:MySQL 的 USE INDEX/FORCE INDEX 的实现?

问题描述

我尝试 FORCE INDEX FOR JOIN ( PRIMARY) 并没有找到明确的答案这是否在 ZF1 中实现并决定在这里问:这是否实现了,你能给出使用示例吗?https://github.com/zendframework/zf1/issues/489

我尝试使用这样的方法:

$this->db->select()->forceIndex('PRIMARY')->from('somefield')->..

但这会返回一个错误:

Unrecognized method 'forceIndex()'

而且我仍然不确定我是否尝试不正确地使用它,或者它根本没有实现。

标签: mysqldatabaseindexingabstractionzf1

解决方案


您可以使用 join() 和 where() 函数来执行此类任务:

$select = $this->select()->from(array('c' => 'cities'),array('*'));
    $select->distinct();
    $select->join(array('l' => 'cities_lang'), 'c.id=l.city_id', array());
    $select->where('l.locale_code = ?', $locale);
    $select->where('l.city_name LIKE ?', $like);
    $select->order('(l.city_name = ' . $db->quote($query) . ') DESC');
    $select->limit($perpage, ($page-1)*$perpage);

    $this->fetchAll($select);

推荐阅读