2013-02-19 64 views
2

如何在cakephp中查看与其关联的ID的数据?

Tables 

Product  Plan   ProductPlan 
id |name  id |name  id | product_id | plan_id  
1 aplha  1 a   1  1   2    
2 bravo  2 b   2  4   c 
3 charlie 4 c 
4 delta 

我想要查看的数据与它相关的编号,例如,如果产品有两个计划,这将是该产品的名单。这样

 alpha | delta | 
     a   c 
     b 

视图代码是

<table> 
<thead> 
    <tr> 
     <?php foreach ($p as $ps){?> 
     <th> 
      <?php echo __l($ps['Product']['name']);?> 
     </th> 
     <?php }?> 
    </tr> 
</thead>  
    <tbody> 
     <?php foreach ($p as $p1){ 
       foreach($p1['Plan'] as $plan){ 
         debug($plan); 
     ?> 
     <tr> 
      <td> 
       <?php echo __l($plan['name']);?>  
      </td> 
     </tr>   
     <?php } 
        }?> 

    </tbody> 

当我调试$ P1阵列,

array(
'Product' => array(
    'product_id' => '1', 
    'name' => 'Event Manager', 
    'slug' => 'event-manager', 
    'is_visible' => true 
), 
'Plan' => array(
    (int) 0 => array(
     'plan_id' => '1', 
     'name' => 'FREE', 
     'description' => '30 Days Trial', 
     'amount' => '0.00', 
     'expiry_days' => '30', 
     'created' => '2012-01-12 16:51:21', 
     'modified' => '2012-01-12 16:51:22', 
     'PlansProduct' => array(
      'plan_product_id' => '1', 
      'product_id' => '1', 
      'plan_id' => '1' 
     ) 
    ), 
    (int) 1 => array(
     'plan_id' => '2', 
     'name' => 'BRONZE', 
     'description' => '60 Days Trial', 
     'amount' => '10.00', 
     'expiry_days' => '60', 
     'created' => '2012-01-12 16:52:24', 
     'modified' => '2012-01-12 16:52:25', 
     'PlansProduct' => array(
      'plan_product_id' => '2', 
      'product_id' => '1', 
      'plan_id' => '2' 
     ) 
    ) 
) 

我该怎么办呢?提前致谢。

回答

0

您必须从控制器传递三个变量。 该变量包含三个不同的表格数据。

在需要时使用。

1

我是否理解“产品有很多计划和计划有很多产品”(多对多)(http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm)。在这种情况下,您必须在模型中声明这种关系。

//models/product.php 
class Product extends AppModel{ 
    public $hasAndBelongsToMany = array(
     'Plan' => 
      array(
       'className'    => 'Plan', 
       'joinTable'    => 'ProductPlan', 
       'foreignKey'    => 'id', 
       'associationForeignKey' => 'id', 
       'unique'     => true, 
       'conditions'    => '', 
       'fields'     => '', 
       'order'     => '', 
       'limit'     => '', 
       'offset'     => '', 
       'finderQuery'   => '', 
       'deleteQuery'   => '', 
       'insertQuery'   => '' 
      ) 
    ); 
} 

如果关系是“一对多”,声明是这样的:

class Product extends AppModel { 
    public $hasMany = array(
     'Plan' => array(
      'className'  => 'Plan', 
      'foreignKey' => 'product_id' 
     ) 
    ); 
} 

而你需要添加一个名为“PRODUCT_ID”到“规划”表的外键。

+0

但问题是如何设置我想要的视图 – usii 2013-02-19 11:37:25

+0

@usii选择它在控制器中,使用$ this-> render(“nameofview”); – Lobo 2013-02-19 11:41:18

相关问题