[英]How to print the data against it's related id?
表
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
但它顯示出我喜歡
alpha | bravo | charlie |delta
a
b
c
這是我的控制器代碼
$p_plan = $this->ProductPlan->find('all',array(
'conditions'=>array(
'ProductPlan.product_id'=>'Product.product_id'
)
)
);
$this->set('p_plan', $p_plan);
這是我的查看代碼,
<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>
我認為這是什么問題?如果有人幫助我,我將對他非常感激。 提前致謝。
顯然我無法發表評論,但我會盡力回答。 由於您在視圖中未提及p_plan,並且您未顯示$ p已創建,因此很難說出實際情況。
工作流程:-獲取3個表-將它們排序為product_id => plan_id的數組的數組-跟蹤product_ids的列號-將該數組傳遞給視圖-在視圖中將該數組打印為row = column
控制器:
//get just the productplan table
$p_plan = $this->ProductPlan->find('all',array(
'conditions'=>array(
'ProductPlan.product_id'=>'Product.product_id'
),'recursive' => -1
));
//get just the products table
$products = $this->Product->find('list',array(
'fields' => array('id','name')
));
//get just the plans table
$plans = $this->Plan->find('list',array(
'fields' => array('id','name')
));
//holder is a table to store counting variables
$holder = array(null);
//final_p_plan will be passed to the view. Array of arrays sorted as product_id => plan_ids
$final_p_plan = array(null);
//p_plan_ids will be passed to the view. Stores an array of used product id
$p_plan_ids = array(null);
//max_length is keeping track of how long the longest one is. will be passed to view. needed for the loop.
$max_length = 0;
//want to end up with an array we can just loop through and print off
foreach($p_plan as $p)
{
//if it's empty set row 0 as product name, then row 1 as the active plan name. else set the next row to the next plan name
if(empty($holder[[$p['product_id']]]))
{
$holder[[$p['product_id']]]['i'] = 2;
$final_p_plan[$p['product_id']][0] = $products[$p['product_id']];
$final_p_plan[$p['product_id']][1] = $plans[$p['plan_id']];
array_push($p_plan_ids,$p['product_id']);
} else {
$final_p_plan[$p['product_id']][$holder[[$p['product_id']]]['i']] = $plans[$p['plan_id']];
$holder[[$p['product_id']]]['i'] = $holder[[$p['product_id']]]['i'] + 1;
if($holder[[$p['product_id']]]['i'] > $max_length)
{
$max_length = $holder[[$p['product_id']]]['i'];
}
}
}
$this->set('final_p_plan', $final_p_plan);
$this->set('p_plan_ids', $p_plan_ids);
$this->set('max_length', $max_length);
視圖:
<table>
<?php $i = 0; while($i < max_length): ?>
<?php if($i == 0): ?>
<thead>
<tr>
<?php foreach($p_plan_ids as $id): ?>
<th>
<?php echo $final_p_plan[$id][$i]; ?>
</th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php else: ?>
<tr>
<?php foreach($p_plan_ids as $id): ?>
<th>
<?php echo $final_p_plan[$id][$i]; ?>
</th>
<?php endforeach; ?>
</tr>
<?php endif; $i++; ?>
<?php endwhile; ?>
</tbody>
</table>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.