【问题标题】:ZF Doctrine model class ext Base ClassZF Doctrine 模型类 ext Base Class
【发布时间】:2012-06-15 13:15:15
【问题描述】:

我显然处于深渊。我没有掌握 Doctrine ModelClass 和 Model Table Class 扩展基础模型的好处

例如

class StaffStaff extends Base_StaffStaff
{
    public function getStaffInformation($id_staff_staff){   // == getInformationsByStaff()

        $query = Doctrine_Query::create()
                        ->from("StaffStaff s")
                        ->innerJoin('s.StaffContract c')
                        ->where("s.id_staff_staff = ?", $id_staff_staff);
        $result = $query->execute();

        return $result;

    }
}

在控制器中

StaffController{

    public function readAction() {

        $id = $this->getRequest()->getParam("id_staff_staff");

        // Get information about a staff
        $model = new StaffStaff();
        $q = $model->getStaffInformation($id);

        $this->view->data = $q[0];

/**
*
* Why do you have to say $q[0] ?
* Is there no better way of doing it?
* How can we access the properties from other tables contained inside the BaseClass extended by the ModelClass
*
*/
}

型号:

/**
 * Base_StaffStaff
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 * 
 * @property integer $id_staff_staff
 * @property integer $fk_id_staff_individual
 * @property integer $fk_id_staff_team
 * @property integer $fk_id_staff_function
 * 
 */

【问题讨论】:

    标签: php zend-framework model doctrine


    【解决方案1】:

    使用 Query Builder API 时,这是您在 getStaffInformation() 函数中组装查询的方式,execute() 方法返回一个可迭代游标。这个游标本质上是一个数组,这就是 $q[0] 将访问第一个元素的原因。

    如果您尝试只返回一个结果,则应改用getSingleResult()

    $query = Doctrine_Query::create()
       ->from("StaffStaff s")
       ->innerJoin('s.StaffContract c')
       ->where("s.id_staff_staff = ?", $id_staff_staff);
    return $query->getSingleResult();
    

    另一方面,可迭代光标很整洁,因为您可以执行以下操作:

    $staff = $model->getStaffInformation($id);
    foreach($staff as $person)
    {
       // Assign all staff to view array
       $this->view->staff[] = $person;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多