Php 在Zend模型中使用$this

Php 在Zend模型中使用$this,php,zend-framework,Php,Zend Framework,我正试图在我的Zend模型中编写getFunction() 仅适用于: public function getFunction($id){ $Wiadomosc = new Application_Model_DbTable_Wiadomosc(); $nieodczytane = $Wiadomosc->select(); $nieodczytane->from(etc.....) } 但我不想在模型中创建对象模型 我想这样做: public functi

我正试图在我的Zend模型中编写
getFunction()

仅适用于:

public function getFunction($id){
    $Wiadomosc = new Application_Model_DbTable_Wiadomosc();
    $nieodczytane = $Wiadomosc->select();
    $nieodczytane->from(etc.....)
}
但我不想在模型中创建对象模型

我想这样做:

public function getFunction($id){
    $nieodczytane = $this->select();
    $nieodczytane->from(etc.....)
}
但是……
方法“select”不存在,并且未被困在调用()中。

如何操作?

据我所知,select()函数已经在Zend模型结构中定义,您的模型继承自Zend模型结构,因此如下所示:

public function getFunction($id){
  $nieodczytane = parent::select();
  $nieodczytane->from(etc.....)
}

虽然你的问题写得很好,不容易理解你想通过这个达到什么目的。让我试着回答。 如果您使用的是Zend数据库表。让我试着解释一下它是如何工作的

例如,您有以下模型 //此类表示数据库方案中的表'Wiadomosc'

Wiadomosc类{

protected $_name = 'Wiadomosc';
protected $_primary = 'id';
} 如果您想编写一个关于模型的get函数,通常您可以通过id进行查询,然后 取你想要的那一排, 您可以按照Zend框架的方式进行操作

  /*** Get list. 
     * @param Integer $id
     * @return Array
     * @throws Exception if id could not be found.
     */
public function  getFunction($id)
{
    $id = (int)$id; //typcast 
    $row = $this->fetchRow('id = ' .$id);
    if(!$row)
    {
        throw new Exception("Could not find $id");
    }
    return $row->toArray();
}
如果情况并非如此,并且您可以从另一个模式进行查询,那么您可以尝试以下方法

public function getFunction($id)
{

$select = $this->select();

$select->from(array('w' => 'Wiadomosc'), array('column1','column2', 'column3'));


$select->setIntegrityCheck(false);

if($rows = $this->fetchAll($select)){

    return $rows;
}elseif (empty($rows)){
    $rows = $this->_name->select();
    return $rows;
}

}
编辑:

您可以执行以下选项之一:

 public function getFunction($id){

            $nieodczytane = $this->select();
            $nieodczytane->from(array('t' => 'YourTableName'),array('*'));

            if($rows = $this->fetchAll($nieodczytane)){
                return $rows;
            }
        }




    public function getFunction($id){

            $nieodczytane = $this->select();

            if($rows = $this->fetchAll($nieodczytane)){
                return $rows;
            }
        }

您在哪里调用这个函数getFunction($id),它是否在Wiadomosc类中。你的问题不清楚。好主意,但是:传递给Zend_Db_Table_Select:的参数1::_construct()必须是Zend_Db_Table_Abstract的实例,SprzedawcaController的实例。我正在尝试使函数使用相同的模型,所以情况1。但是当我使用$this->select()方法时,“select”不存在,并且没有被困在_call()中