2013-05-16 128 views
0

我没有获取某个特定项目的类别。 模型与关系cakephp - 获取特定类别的项目

  • 1项目有许多ProjectCategory(中间表是NodeAssociation)
  • 我使用的hasAndBelongsToMany关系

    /示范项目/

    public $hasAndBelongsToMany = array(
        'ProjectCategory' => array(
         'className' => 'ProjectCategory', 
         'joinTable' => 'NodeAssociation', 
         'foreignKey' => 'skin_node_id', 
         'associationForeignKey' => 'source_node_id' 
        ) 
    ); 
    

/SQL/

SELECT pc.id,pc.cname AS类

FROM项目p

JOIN nodeassociation NA

ON p.id = na.source_node_id和p.id = 10001

JOIN projectcategory pc

ON na.sink_node_id = pc.id AND sink_node_entity ='ProjectCategory';

FUNCTION in ProjectsController 

    $joins = array(
       array('table' => 'nodeassociation', 
        'alias' => 'NodeAssociation', 
        'conditions' => array(
         'Project.id = NodeAssociation.source_node_id', 
        ) 
       ), 
       array('table' => 'projectcategory', 
        'alias' => 'ProjectCategory', 
        'conditions' => array(
         'NodeAssociation.sink_node_id = ProjectCategory.id', "NodeAssociation.sink_node_entity='ProjectCategory'" 
        ) 
       ) 
      ); 

      $categories = $this->Project->ProjectCategory->find('all', array('joins' => $joins, 
       'fields' => array('ProjectCategory.id, ProjectCategory.cname'), 
       'recursive' => -1, 
       'conditions' => array('Project.id' => 10001))); 

的错误,在我看来是

Error: SQLSTATE[42P01]: Undefined table: 7 ERRO: faltando entrada para tabela "Project" na cláusula FROM LINE 1: ...ublic"."nodeassociation" AS "NodeAssociation" ON ("Project"....^

我究竟做错了什么?

问候

+0

如果你想跟着蛋糕约定,你的表名应当强调复数。我无法读取该错误,但看起来无法找到“项目”表? – Dave

+0

我无法更改数据库。 :/是的,它不能找到项目表。 – Jcbo

+0

是否有项目表? – Dave

回答

0

设置这在您的项目模型:

public $useTable = 'project'; 
+0

我已经这样做:/ – Jcbo