Php Zend框架关系与表选择
嘿!我只是想知道你们对在zend框架中使用联接表的看法 当然,您可以通过定义referenceMap和dependentTables等来使用关系,或者使用Php Zend框架关系与表选择,php,mysql,database,zend-framework,Php,Mysql,Database,Zend Framework,嘿!我只是想知道你们对在zend框架中使用联接表的看法 当然,您可以通过定义referenceMap和dependentTables等来使用关系,或者使用 setIntegrityCheck(false) 在db select()中。setIntegrityCheck版本对我来说似乎有点脏,但另一个版本不太适合大查询和连接许多表 我已经做了5年的PHP开发人员,对zend框架还不熟悉,只想为我的第一个项目找到方向 谢谢 我个人到处都用。我通常会设置一个引用映射,然后用调用该关系的getX()定
setIntegrityCheck(false)
在db select()中。setIntegrityCheck版本对我来说似乎有点脏,但另一个版本不太适合大查询和连接许多表
我已经做了5年的PHP开发人员,对zend框架还不熟悉,只想为我的第一个项目找到方向
谢谢 我个人到处都用。我通常会设置一个引用映射,然后用调用该关系的getX()定义模型
class Model_Content extends Zend_Db_Table_Row_Abstract
{
public function getComments($showInactive = false)
{
$select = $this->_table->select();
if (!$showInactive) {
$select->where('comment_active = \'y\'');
}
return $this->findDependentRowset('Model_DbTable_Comment', null, $select);
}
}
好办法。。。就我所见,在ZF中,只有select()可以获取一个行集,其中包括来自2个或更多表的数据,对吗?例如,我可以有一个用户,这个用户有一个图像和一个帐户。两张桌子是分开的 使用findDependentRowset时,无法得到如下结果: 用户名=>tom
imagepath=>/images/tom.jpg
accounttype=>免费
在一个物体内,对吗?还是我遗漏了什么?谢谢你的帮助 就我个人而言,我在任何地方都使用setIntegrityCheck(false)。是的,它有点脏,但它是KISS,编写这样复杂的连接查询要容易得多。我也使用setIntegrityCheck(false),因为正如Richard所说,它是KISS,是构建大型查询的唯一选项。使用select()的另一个好处是,您可以将其回声输出
通过这种方式,您可以检查您的工作,当您使用referenceMap时,这并不是那么容易…findDependentRowset/findParentRow方法都是公平和良好的,除非您执行的查询包含大量数据。根据过去的经验,使用这些方法调用另一个数据库查询,即使它以前已经执行过,而且我已经记录了web和数据库服务器之间的大量数据流量。在这种情况下,应用程序需要转换为使用join方法 但是,findDependentRowset和findParentRow方法有其优势,允许您从联接表中调用新Zend_Db_Table_Row对象上的相同方法 rtmilker:findDependentRowset应该返回Zend_Db_Table_行的数组,因此在这种情况下:
foreach($myTableAdapter->findDependentRowset('New_Table_Class', 'rule/[null]', $select) as $dependentRowObject){
Zend_Debug::dump($dependentRowObject->toArray());
}
findParentRow方法显然不需要foreach语句;fetchRow()/fetchAll()方法也是如此