SphinxQL&Phalcon \ Mvc \ Model
问题描述:
我有一个运行于MySQL协议上的Sphinx搜索引擎,我使用Phalcon \ Db \ Adapter \ Pdo \ Mysql连接到它。狮身人面像表被实现为模型。SphinxQL&Phalcon Mvc Model
当我尝试选择(使用SpinxQL)时,显然,当数据库适配器尝试提取表数据库运行查询时,出现错误,该查询针对SpinxQL中不支持和不存在的表。在说明如何手动分配元数据的文档中有一种解决方法...但由于本质上是懒惰,我想尝试自动化元数据生成。
我假设元数据是由数据库适配器产生的,可能是由于在getColumnDefinition()或其他(???)之后的实例上调用getColumnsList()的结果。这是我的假设是否正确?我想要扩展Phalcon \ Db \ Adapter \ Pdo \ Mysql并重写那些与Sphinx兼容的方法。
在此先感谢您的建议!
答
好吧,你需要重写至少两种方法来完成这项工作,下面的类将工作:
<?php
class SphinxQlAdapter extends Phalcon\Db\Adapter\Pdo\Mysql implements Phalcon\Db\AdapterInterface
{
/**
* This method checks if a table exists
*
* @param string $table
* @param string $schema
* @return boolean
*/
public function tableExists($table, $schema=null)
{
}
/**
* This method describe the table's columns returning an array of
* Phalcon\Db\Column
*
* @param string $table
* @param string $schema
* @return Phalcon\Db\ColumnInterface[]
*/
public function describeColumns($table, $schema=null)
{
}
}
然后在你的连接,你可以使用新的适配器:
$di->set('db', function(){
return new SphinxQlAdapter(
//...
);
});