Zend framework 如何使用Zend Framework从多个表中获取数据并在视图中显示
提前感谢…请参阅下面的代码。。我有两种型号,类别和产品 我的产品模型 类管理模型产品扩展了Zend数据库表抽象{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',
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;