Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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/1/database/8.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
Mysql zend框架从两个表中获取数据_Mysql_Database_Zend Framework_Frameworks - Fatal编程技术网

Mysql zend框架从两个表中获取数据

Mysql zend框架从两个表中获取数据,mysql,database,zend-framework,frameworks,Mysql,Database,Zend Framework,Frameworks,如果我使用 $query = $this ->select() ->from(array('a' => 'aanvragen')) ->join(array('v' => 'verloven'), 'v.aanvraag_id = a.id' ,array()) ->where('a.personeelslid_id = :personeelslid_id'

如果我使用

 $query = $this
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' ,array())
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->fetchAll($query, array('aanvragen','verloven'));
我得到了正确的
记录
,但由于
array()
的原因,表
verloven(v)
中没有数据

但如果我删除空数组,如:

     $query = $this
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' )
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->fetchAll($query, array('aanvragen','verloven'));
我得到一个错误:

Select查询无法与其他表联接


如何从两个表中获取数据?

假设您使用的是zf 1+,您可以从模型中执行以下操作:

 $sql=$this->select()
            ->setIntegrityCheck(false)
            ->from(array('a' => 'aanvragen'),array('field1','field2'))               
            ->join(array('v' => 'verloven'),'v.aanvraag_id = a.id',array('field3'))  
            ->where('a.personeelslid_id = :personeelslid_id')
            ->where('v.type = 3')   
            ->group('fieldname')
            ->order('fieldname');          

        $resultSet = $this->fetchAll($sql);
        return $resultSet; 
您需要将setIntgrityCheck设置为false才能加入选择查询。。
希望这对您有所帮助。

假设您使用的是zf 1+,您可以从您的模型中执行以下操作:

 $sql=$this->select()
            ->setIntegrityCheck(false)
            ->from(array('a' => 'aanvragen'),array('field1','field2'))               
            ->join(array('v' => 'verloven'),'v.aanvraag_id = a.id',array('field3'))  
            ->where('a.personeelslid_id = :personeelslid_id')
            ->where('v.type = 3')   
            ->group('fieldname')
            ->order('fieldname');          

        $resultSet = $this->fetchAll($sql);
        return $resultSet; 
您需要将setIntgrityCheck设置为false才能加入选择查询。。
希望这对您有所帮助。

假设您使用的是zf 1+,您可以从您的模型中执行以下操作:

 $sql=$this->select()
            ->setIntegrityCheck(false)
            ->from(array('a' => 'aanvragen'),array('field1','field2'))               
            ->join(array('v' => 'verloven'),'v.aanvraag_id = a.id',array('field3'))  
            ->where('a.personeelslid_id = :personeelslid_id')
            ->where('v.type = 3')   
            ->group('fieldname')
            ->order('fieldname');          

        $resultSet = $this->fetchAll($sql);
        return $resultSet; 
您需要将setIntgrityCheck设置为false才能加入选择查询。。
希望这对您有所帮助。

假设您使用的是zf 1+,您可以从您的模型中执行以下操作:

 $sql=$this->select()
            ->setIntegrityCheck(false)
            ->from(array('a' => 'aanvragen'),array('field1','field2'))               
            ->join(array('v' => 'verloven'),'v.aanvraag_id = a.id',array('field3'))  
            ->where('a.personeelslid_id = :personeelslid_id')
            ->where('v.type = 3')   
            ->group('fieldname')
            ->order('fieldname');          

        $resultSet = $this->fetchAll($sql);
        return $resultSet; 
您需要将setIntgrityCheck设置为false才能加入选择查询。。
希望这对您有所帮助。

好吧,如果您真正需要的是跨表的内容,您应该几乎从不设置
setIntegrityCheck(false)

正确的方法是使用Zend_Db_适配器:

$query = $this
        ->getAdapter()
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' ,array())
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->getAdapter()->fetchAll($query, array('aanvragen','verloven'));
这背后的原因是,您所使用的(假设您的模型从
Zend\u Db\u Table\u Abstract
扩展而来)是一个上下文。也就是说,您正在告诉框架,您希望使用特定的表,而不关心其他表


如果要进行连接,应该在上下文阶梯中向上走一步,并使用Db上下文,这可以通过使用
getAdapter()
方法获得。

AFAIK,如果您真正需要的是跨表的内容,则应该几乎从不设置
setIntegrityCheck(false)

正确的方法是使用Zend_Db_适配器:

$query = $this
        ->getAdapter()
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' ,array())
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->getAdapter()->fetchAll($query, array('aanvragen','verloven'));
这背后的原因是,您所使用的(假设您的模型从
Zend\u Db\u Table\u Abstract
扩展而来)是一个上下文。也就是说,您正在告诉框架,您希望使用特定的表,而不关心其他表


如果要进行连接,应该在上下文阶梯中向上走一步,并使用Db上下文,这可以通过使用
getAdapter()
方法获得。

AFAIK,如果您真正需要的是跨表的内容,则应该几乎从不设置
setIntegrityCheck(false)

正确的方法是使用Zend_Db_适配器:

$query = $this
        ->getAdapter()
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' ,array())
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->getAdapter()->fetchAll($query, array('aanvragen','verloven'));
这背后的原因是,您所使用的(假设您的模型从
Zend\u Db\u Table\u Abstract
扩展而来)是一个上下文。也就是说,您正在告诉框架,您希望使用特定的表,而不关心其他表


如果要进行连接,应该在上下文阶梯中向上走一步,并使用Db上下文,这可以通过使用
getAdapter()
方法获得。

AFAIK,如果您真正需要的是跨表的内容,则应该几乎从不设置
setIntegrityCheck(false)

正确的方法是使用Zend_Db_适配器:

$query = $this
        ->getAdapter()
        ->select()
        ->from(array('a' => 'aanvragen'))
        ->join(array('v' => 'verloven'),
                   'v.aanvraag_id = a.id' ,array())
        ->where('a.personeelslid_id = :personeelslid_id')
        ->where('v.type = 3')
        ->bind(array(
            'personeelslid_id' => $this->_personeelslid->id
        ))
    ;
    return $this->getAdapter()->fetchAll($query, array('aanvragen','verloven'));
这背后的原因是,您所使用的(假设您的模型从
Zend\u Db\u Table\u Abstract
扩展而来)是一个上下文。也就是说,您正在告诉框架,您希望使用特定的表,而不关心其他表

如果你想做一个连接,你应该在上下文中增加一步,并使用<强> dB <强>上下文,这可以通过使用<代码> GETAdvulter()/<代码>方法获得。