Zend framework 如何使用Zend Framework从多个表中获取数据并在视图中显示

Zend framework 如何使用Zend Framework从多个表中获取数据并在视图中显示,zend-framework,zend-db,table-relationships,Zend Framework,Zend Db,Table Relationships,提前感谢…请参阅下面的代码。。我有两种型号,类别和产品 我的产品模型 类管理模型产品扩展了Zend数据库表抽象{ protected $_name = 'products'; protected $_referenceMap = array( 'category' => array( 'columns' => array('category_id'), 'refTableClass' => 'Admin_Model_Category',

提前感谢…请参阅下面的代码。。我有两种型号,类别和产品

我的产品模型 类管理模型产品扩展了Zend数据库表抽象{

protected $_name = 'products';
protected $_referenceMap = array(
    'category' => array(
        'columns' => array('category_id'),
        'refTableClass' => 'Admin_Model_Category',
        'refColumns' => array('id'),
        'onDelete' => self::CASCADE,
        'onUpdate' => self::RESTRICT
    )
);
}

我的分类模型是:

class Admin_Model_Category extends Zend_Db_Table_Abstract {

protected $_name = 'categories';
protected $_dependentTables = array('Admin_Model_Product');
} 在我的产品控制器中,我有

class Admin_ProductsController extends Zend_Controller_Action {

public function init() {

}

public function indexAction() {
    echo '<pre>';
    $model = new Admin_Model_Product();

}
类管理\u产品控制器扩展Zend\u控制器\u操作{
公共函数init(){
}
公共函数索引(){
回声';
$model=新管理员\模型\产品();
}
}


我需要做的是使用fetchAll()方法获取所有产品,并且需要获取每个产品的parentrow并在我的视图中显示它。。。我可以拉所有的产品,但我不知道如何找到每个产品的父类和绑定它们,有没有任何示例源代码?或者有什么建议?我需要一个包含所有产品和父类别名称的数组。请快点。谢谢。

实现这一点的最佳方法是迭代产品结果并创建包含所有类别id的数组,然后使用
查询类别模型,其中('category_id IN(?),$array_of_categories_id)
然后使用
id\u category=>row\u对从categories行集创建一个数组
。然后,只需两个查询即可完成此操作:)

无论如何,为可能的打字错误感到抱歉,在飞行中写下;)

尝试以下操作:

检索类别及其产品:

$view->results = results;
然后将其传递到视图:


谢谢你的关注…我是zend的新手,正在做我的第一个项目。。。我可以通过使用Joins()来实现这一点,但我无法理解您的方法……您能给我一些代码示例吗?提前谢谢…太好了亲爱的…你的解决方案可能看起来有点困难,但它真的很好。。。谢谢:-)这只是简单的数据操作,当然您可以覆盖product的行集类并在那里创建此方法,然后只需调用
$productsRowset->getCategories()
或诸如此类的函数,但它比这复杂得多:如果我们有更多的表怎么办?例如,如果我有产品图片,产品尺寸?您将如何反映您的解决方案?还有一件事…如果我接近您的解决方案,那么为什么我需要定义关系?由于我正在查询当前id上的数据……因此,通过这样做,我是否需要定义关系?这是最糟糕的事情,现在您正在创建n个查询,其中n是产品数,人们应该避免使用此解决方案,因为您可以仅对查询进行查询。**致命错误:调用成员函数findDependentRowset()在C:\xampp\htdocs\wnw\application\modules\admin\controllers\ProductsController.p**中的一个非对象上,我添加了一个Categrow,以便能够调用FindDependentRowset。我不是那么专业,但您的答案给了我想要的…感谢您和其他人的帮助…:-)
$model_category = new Admin_Model_Category();
$categorySet = $model_category->fetchAll(); 
$categories = $categorySet->toArray();

$i = 0;
$results = array();
foreach($categories as $category)
   $categoryRow = $model_category->fetchRow('id =', $category->category_id)
   $products = $categoryRow->findDependentRowset('Admin_Model_Product');
   $results[$i]['parent'] = $category;
   $results[$i]['products'] = $products;
   $i++;
}
$view->results = results;