Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend框架关系与表选择_Php_Mysql_Database_Zend Framework - Fatal编程技术网

Php Zend框架关系与表选择

Php Zend框架关系与表选择,php,mysql,database,zend-framework,Php,Mysql,Database,Zend Framework,嘿!我只是想知道你们对在zend框架中使用联接表的看法 当然,您可以通过定义referenceMap和dependentTables等来使用关系,或者使用 setIntegrityCheck(false) 在db select()中。setIntegrityCheck版本对我来说似乎有点脏,但另一个版本不太适合大查询和连接许多表 我已经做了5年的PHP开发人员,对zend框架还不熟悉,只想为我的第一个项目找到方向 谢谢 我个人到处都用。我通常会设置一个引用映射,然后用调用该关系的getX()定

嘿!我只是想知道你们对在zend框架中使用联接表的看法

当然,您可以通过定义referenceMap和dependentTables等来使用关系,或者使用

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()方法也是如此