如何在zend框架工作中使用扩展Zend_Db_Table_Abstract来使用多个$ _name

时间:2010-04-08 12:55:54

标签: php zend-framework zend-db-table

我们尝试这样做,但它显示了一些错误。我们的表名是用户和消息。

<?php

class Application_Model_childconnect1 extends Zend_Db_Table_Abstract
{
    protected $_name = 'users';

    public function loginvalidation($username,$pwd)
    {


        $row = $this->fetchRow('UserName = \'' . $username . '\'and UserPW = \''. $pwd . '\'');
        if (!$row)
        {
            $msg="invalid";
            return $msg;
        }
        else
        {
            return $row->toArray();
        }

    }

    protected $_name = 'messages';

     public function replymessage($message)
      {

        $data=array(
            'MessageText'=>$message
              );
        $this->insert($data);
      }


}

2 个答案:

答案 0 :(得分:1)

Zend_Db_TableTable Data Gateway,根据定义是

  

充当数据库表的网关的对象。一个实例处理表中的所有行。

反过来意味着每个表有一个类,每个类不能有多个名称。请参阅Zend框架参考指南以了解如何正确使用它:

答案 1 :(得分:0)

虽然欢迎您按原样设置应用程序,但您可能希望使用Zend Auth来处理身份验证。

除此之外,如果您打算一般使用ZF,那么利用Zend_Db_Select课程可能会有所帮助。

<?php
public function loginvalidation($username,$pwd)
{
  $s = $this->select();
  $s->where('UserNmae = ?',$username)
  $s->where('UserPW = ?',$pwd);

  $rowset = $this->fetchall($s);
  if(count($rowset) == 1)
  {
   return $row->current()->toArray();
  } else {
   return "Invalid"
  }
}

如果你真的想手动生成SQL,你也可以这样做。只需使用Zend_Db_Adapter对象的查询方法。

<?php
public function loginvalidation($username,$pwd)
{
  $rowset = $this->getAdapter()->query('UserName = \'' . $username . '\'and UserPW = \''. $pwd . '\'');
  if(count($rowset) == 1)
  {
   return $row->current()->toArray();
  } else {
   return "Invalid"
  }
}