gpt4 book ai didi

zend-framework - 使用 Zend_DB_Table 选择查询

转载 作者:行者123 更新时间:2023-12-04 06:40:08 25 4
gpt4 key购买 nike

我有一个类似以下的代码

class Application_Model_Company  extends Zend_Db_Table_Abstract {
protected $_name = 'companies';
private $id;
private $name;
private $shortName;
private $description;

public static function getAllCompanies() {
$companyObj = new self();
$select = $companyObj->select()->order(array('name'));
$rows = $companyObj->fetchAll($select);
if($rows) {
$companies = array();
foreach($rows as $row) {
$company = new self();
$company->id = $row->id;
$company->name = $row->name;
$company->shortName = $row->short_name;
$company->description = $row->description;
$companies[] = $comapny;
}
// return Company Objects
return $companies;
}else
throw new Exception('Oops..');
}
}

我需要从 getAllCompanies() 函数返回公司对象,但它返回 Zend_Db_Table_Row 对象。我该如何纠正?

最佳答案

您的 Model 类不应该扩展 table 类。表类是分开的。如果从 Zend_Db 扩展任何东西,您的模型应该扩展行类。此外,您不应该直接将检索方法放在模型类上,它们会放在表类上。

这是因为在您在这里尝试使用的范式中,模型表示单行数据,表类将表表示为数据存储库,而行集类表示行(或模型)的集合。

要正确实现您在问题中描述的内容,您将执行以下操作:

class Application_Model_DbTable_Company extends Zend_Db_Table_Abstract
{
// table name
protected $_name = 'company';

protected _$rowClass = 'Application_Model_Company';

// your custom retrieval methods
}

class Application_Model_Company extends Zend_Db_Table_Row
{
protected $_tableClass = 'Application_Model_DbTable_Company';
// custom accessors and mutators
}

但是,实际上推荐使用某种 Data Mapper 模式的实现。查看 Quickstart有关简化实现的详尽教程。

关于zend-framework - 使用 Zend_DB_Table 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357365/

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