gpt4 book ai didi

zend-framework - Zend 与 select 的关系

转载 作者:行者123 更新时间:2023-12-01 05:46:36 26 4
gpt4 key购买 nike

我是 Zend 的新手。我被要求重新开发一个曾经用普通 PHP 编写的网站并将其放入 zend 框架中。

我在数据库关系方面遇到了很多麻烦,我似乎无法理解定义和查询关系。

我想找到一个类别。从该类别中,我希望能够找到与其关联的所有 CategoryInfo,并能够查询/排序/限制该数据集。

这是我的模型。

分类.php

<?php
class Default_Model_Categorys extends Zend_Db_Table_Abstract
{
protected $_name = 'Categorys';
protected $_primary = 'id';

protected $_dependentTables = array('Default_Model_CategoryInfo');
}
?>

分类信息.php
<?php
class Default_Model_CategoryInfo extends Zend_Db_Table_Abstract
{
protected $_name = 'Category_Info';
protected $_primary = 'id';

protected $_referenceMap = array(
'Categorys' => array(
'columns' => array('cat_id'),
'refTableClass' => 'Default_Model_Categorys',
'refColumns' => array('id')
)
);
}
?>

类别 Controller .php
<?php
class CategorysController extends Zend_Controller_Action
{
public function indexAction()
{
/*
this should redirect to all games
*/
return $this->_forward("index", "games");
}

public function categoryAction()
{
/*
shows a specific category
*/
$id = (int) $this->_request->getParam('id');
$category = new Default_Model_Categorys();
$this->view->category = $category->fetchRow(
$category->select()->where('id = ?', $id)
);

$categoryInfo = $this->view->category->findDependentRowset('Default_Model_CategoryInfo');

}
}

首先……我做错了什么吗?

其次......我如何查询相关行集?

最佳答案

首先,如果您按主键搜索类别,使用 find() 会更简单。方法:

$id = (int) $this->_request->getParam('id');
$category = new Default_Model_Categorys();
$this->view->category = $category->find($id)->current();

二、限制或排序依赖 Category_Info行,您可以使用 Zend_Db_Table_Select对象作为 findDependentRowset() 的可选参数.下面是一个例子:
$select = $category->select()->where("info_type = 'PRICE'")
->order("info_date")
->limit(3);
$categoryInfo = $this->view->category->findDependentRowset(
'Default_Model_CategoryInfo', null, $select);

请注意,您可以使用任何表格对象来创建该选择对象。由于该选择的“ FROM ”子句将由 findDependentRowset() 设置方法,你只需添加其他子句然后传入即可。

PS:不需要申报 $_dependentTables除非您打算通过 PHP 代码使用级联更新或级联删除。我强烈建议不要这样做——让 RDBMS 处理这些级联操作的效率要高得多。

同样,您永远不必声明 $_primary如果您的数据库表实际上声明了主键约束。 Zend_Db_Table_Abstract知道如何检查元数据以获取主键列。

关于zend-framework - Zend 与 select 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com