使用CakeDC搜索插件链接两个模型

时间:2015-07-05 12:15:05

标签: mysql cakephp search cakedc

我有一个小问题,就是我消耗的日子。 我需要在CakePHP中使用两个不同的模型进行搜索,我使用CakeDC搜索插件。模型是'Desordens'和'Sinonimos',协会是hasMany。一个'Desorden'有很多'Sinonymous':

for

所以,我按照CakeDC Docs中的示例制作了这个:

labelable element

我想要做的是搜索,用户可以在其中插入名称,orphanumber或同义词。在SQL中将是:

public $hasMany = array(
    'Sinonimo' => array(
        'className' => 'Sinonimo',
        'foreignKey' => 'desorden_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    ),

但表'Sinonimo'没有加入,我有1054错误:

  

错误:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'Sinonimo.sinonimo'

我不知道我错过了什么,我配置的控制器是这样的:

public $filterArgs = array(
    'busca' => array(
        'type' => 'like',
        'encode' => true,
        'before' => false,
        'after' => false,
        'field' => array(
            'Desorden.name',
            'Desorden.orphanumber',
            'Sinonimo.sinonimo')
    )
);

我认为在模型或cakedc filterArg配置中没问题,因为查询是以正确的方式构造的。我尝试使用bindModel在表'Desordens'和'Sinonimos'之间建立连接,但没有成功.. ..

SELECT `Desorden`.`id`, `Desorden`.`name`, `Desorden`.`orphanumber`, `Desorden`.`expertlink`, `Desorden`.`tipodesordem`, `Desorden`.`descricao`, `Sinonimo`.`id`, `Sinonimo`.`sinonimo`, `Sinonimo`.`desorden_id` FROM `rederaras`.`desordens` AS `Desorden` LEFT JOIN `rederaras`.`sinonimos` AS `Sinonimo` ON (`Sinonimo`.`desorden_id` = `Desorden`.`id`) WHERE ((`Desorden`.`name` LIKE 'mult') OR (`Desorden`.`orphanumber` LIKE 'mult') OR (`Sinonimo`.`sinonimo` LIKE 'mult'))

任何人都可以帮助我加入这个活动吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我在两个模型中使用$ belongsTo解决了问题。当我设置$ belongsTo时,CakeDC在表之间创建一个Join。我不知道这是否是最佳解决方案,但对我有用。如果这有帮助的人。