【问题标题】:join multiple tables in CakePHP and retrive data [closed]在 CakePHP 中加入多个表并检索数据 [关闭]
【发布时间】:2014-07-16 14:46:06
【问题描述】:

更新问题

我正在尝试在 CakePHP 中加入多个表并检索它们的数据。 我创建了模型,但没有得到相关结果。

下面是我的表结构。

Fields needed :
    Equipment Name
    Equipment Description
    Equipment Type name according to Equipment id
    Equipment Type Sizes names according to Type id
    Sizes Stock.

型号:Equipment.php

class Equipment extends AppModel {
    public $useTable = 'equipments';
    var $name = 'Equipment';
    public $cacheQueries = false;

    public $hasMany = array(
        'Sizes' => array(
            'className' => 'EquipmentSize',
            'foreignKey' => 'equipment_id'

        )
    );
}

型号:EquipmentSizes .php

class EquipmentSizes extends AppModel {
    public $useTable = 'equipment_sizes';
    var $name = 'EquipmentSizes';
    public $cacheQueries = false;
    public $belongsTo = array(
        'Equipment' => array(
            'className' => 'Equipment',
            'foreignKey' => 'equipment_id',
            'fields' => array('id', 'sizes')
        )
    );
 }

型号:EquipmentType.php

class EquipmentType extends AppModel {
    public $useTable = 'equipment_types';
    var $name = 'EquipmentType';
    public $cacheQueries = false;

    public $hasMany = array(
        'Sizes' => array(
            'className' => 'EquipmentTypesSize',
            'foreignKey' => 'equipment_type_id'
        )
    );
}

型号:EquipmentTypesSizes.php

class EquipmentTypesSizes extends AppModel {
    public $useTable = 'equipment_types_sizes';
    var $name = 'EquipmentTypesSizes';
    public $cacheQueries = false;
    public $belongsTo = array(
        'EquipmentType' => array(
            'className' => 'EquipmentType',
            'foreignKey' => 'equipment_type_id',
            'fields' => array('id', 'sizes')
        )
    );
}

【问题讨论】:

  • 您的问题是数据库架构,而不是 CakePHP。

标签: php mysql database database-design cakephp-2.0


【解决方案1】:

您忘记了某些具有 hasToMany 关系的模型(Equipment.php、EquipmentType.php)上的外键。先更正您的模型,然后尝试查询设备,您可以在那里看到设备的关联模型。然后,您可以以此为基础。

更新 - Equipment.php

class Equipment extends AppModel {
   public $useTable = 'equipments';
   var $name = 'Equipment';
   public $cacheQueries = false;

   public $hasMany = array(
     'Sizes' => array(
        'className' => 'EquipmentSize',
        'foreignKey' => 'equipment_id'

    ),
    'EquipmentType' => array(
        'className' => 'EquipmentType',
        'foreignKey' => 'equipment_id'

    )
 );

}

EquipmentSizes.php 是正确的。

更新 - EquipmentType.php

class EquipmentType extends AppModel {
    public $useTable = 'equipment_types';
    var $name = 'EquipmentType';
    public $cacheQueries = false;

    public $hasMany = array(
        'Sizes' => array(
            'className' => 'EquipmentTypesSize',
            'foreignKey' => 'equipment_type_id'
        )
    );

    public $belongsTo = array(
        'Equipment' => array(
            'className' => 'Equipment',
            'foreignKey' => 'equipment_id'
        )
    );
}

EquipmentTypesSizes.php 是正确的。

【讨论】:

  • 谢谢。我已经用你的建议更新了我的代码,但问题是一样的。我也在这里更新了我的问题。和DB也..请..
  • @PuzzledBoy 请更新您的问题,添加您使用的查询及其输出,以便我们帮助您调试它。
  • @PuzzledBoy,我在这里更新了答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2013-07-23
  • 2023-03-03
  • 1970-01-01
  • 2016-09-16
  • 2013-05-06
相关资源
最近更新 更多