私はこれを完了する方法を考え出すことができないことを告白しなければなりません. MySql で動作するクエリを取得でき、Zend Framework で単純なテーブルまたはビューのクエリを取得できますが、これは私にはできません!
実行しようとしているクエリは次のとおりです。
SELECT * from (
SELECT
'Tab' as 'table_name', TabId as id, `TabTitle` as title,
(MATCH(`TabTitle`,`TabSubTitle`) AGAINST (@target)) as relevance
from Tab
UNION
SELECT
'Tab2' as 'table_name',
Tab2Id as id, `Tab2Title` as title,
(MATCH(`Tab2Title`,`Tab2Desc`) AGAINST (@target)) as relevance
from Tab2
)
as sitewide WHERE relevance > 0 order by relevance DESC;
これをZendのMVCフレームワークに押し込む方法について、あなたが提供できる指針があればお願いします!
追加するために編集:
これは私が使用している現在のモデル コードで、「Zend_Paginator_Adapter_DbTableSelect::__construct() に渡された引数 1 は Zend_Db_Select のインスタンスである必要があります。指定された文字列です」というエラーが表示されます。
class Application_Model_Search extends Zend_Db_Table
{
protected $_name = ‘Search’;
protected $_primary = 'SearchId';
function getSearchResults($page, $searchTerm)
{
$query = "
SELECT * from (
SELECT
'Tab' as 'table_name', TabId as id, `TabTitle` as title,
(MATCH(`TabTitle`,`TabSubTitle`) AGAINST (@target)) as relevance
from Tab
UNION
SELECT
'Tab2' as 'table_name',
Tab2Id as id, `Tab2Title` as title,
(MATCH(`Tab2Title`,`Tab2Desc`) AGAINST (@target)) as relevance
from Tab2
)
as sitewide WHERE relevance > 0 order by relevance DESC;
";
echo ($query);
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($query));
$paginator->setItemCountPerPage(15); //
$paginator->setCurrentPageNumber($page);
return $paginator;
}
}