【发布时间】:2012-10-14 19:17:05
【问题描述】:
我是 CodeIgniter 的新手。
我为比萨表和配料表创建了模型。表由附加的 Pizza_Ingredients 表连接(它的多对多关系)。
我的模特:
<?php
class Pizza extends DataMapper {
var $table = 'Pizza';
var $has_many =
array(
'ingredients' =>
array(
'class' => 'ingredients',
'join_table' => 'pizza_ingredients'
)
);
}
class Ingredients extends DataMapper {
var $table = 'Ingredients';
var $has_many =
array(
'pizza' =>
array(
'class' => 'pizza',
'join_table' => 'pizza_ingredients'
)
);
}
?>
当我使用该代码获取数据时:
$pm = new Pizza();
$pm->include_related('ingredients');
$array = $pm->get();
我正在获取包含重复 Pizza 值的数组(看起来只是 sql 查询结果)。
margherita | cheese
vegetariana | vegetable 1
vegetariana | vegetable 2
我不能像这样在数组的“foreach”中简单地生成 html 表。
我想获取具有如下结构的对象:
margherita:
- cheese
vegetariana:
- vegetable 1
- vegetable 2
这让我可以在“披萨循环”中与其他 foreach 循环(带有配料)一起制作 foreach 循环(带有披萨)。
我必须用 PHP 写这个,或者 CodeIgniter/DataMapper 可以为我做更多的事情?
有什么建议吗?
【问题讨论】:
-
我认为这与您的 get 方法有关,而不是您在上面显示的类/方法。在您的 get 方法中,只需将数组的键设置为您从数据库返回的比萨饼。当配料进来时,您将附加比萨数组,而不是为每种配料的每个比萨创建一个新数组。
-
好的,所以我必须为我的披萨编写自定义访问器。但是如何以 CodeIgniter 风格高效地做到这一点?有人可以举个小例子吗?
标签: php codeigniter codeigniter-datamapper