我有桌子
Items, Attributes,Taxonomies, Taxonomy_attributes,Item_attributes.
Taxonomy_attributes具有两个字段attribute_id(这是属性表的ID的外键)和taxonomy_id(这是分类法表的ID的外键)。
另一方面,Item_attributes具有两个字段attribute_id(这是ID属性表的外键)和item_id(这是ID项目表的外键)。
属性表具有以下字段:-名称,类型和可检查(0或1)。
项目表具有字段ID和模型。
分类表中包含if和name字段。
我想向Attribute模型中添加一个方法,该方法返回可检查等于1的所有属性的列表,并与项目和分类法结合,为每个属性返回项目模型和分类法名称。
我的代码如下:
public function getCheckables($checkable)
{
$data = $this->find('all',array(
'fields' => array('Attribute.name', 'Attribute.type', 'Item.model', 'Taxonomy.name'),
'conditions' => array('Attribute.checkable' => 1),
'joins' => array(
array(
'table' => 'item_attributes',
'alias' => 'ItemAttribute',
'type' => 'INNER',
'conditions' => 'ItemAttribute.Item_id = Item.id',
),
array(
'table' => 'items',
'alias' => 'Item',
'type' => 'INNER',
'conditions' => 'ItemAttribute.item_id = Item.id'
),
array(
'table' => 'taxonomy_attributes',
'alias' => 'TaxonomyAttribute',
'type' => 'INNER',
'conditions' => 'TaxonomyAttribute.Taxonomy_id = Taxonomy.id'
)
),
'recursive'=>-1
)
);
pr($data); die();
}
有人可以用正确的代码指导我吗?
最佳答案
您的2个联接具有相同的条件:'conditions'=>'ItemAttribute.Item_id = Item.id',如果是第一个联接,则尚未联接Item表,如果是第二个联接,则联接是因为您的第一个条件是错误,未联接ItemAttribute表。