【问题标题】:Need help transforming Zend Db Select from zf1 to zf2需要帮助将 Zend Db Select 从 zf1 转换为 zf2
【发布时间】:2013-11-07 17:57:53
【问题描述】:

我正在更新我的框架。以前我使用 zf1 zend db select 作为我的数据访问对象类。现在,我想换班并升级到 zf2。我在翻译插入、更新、选择和删除查询时遇到问题,想知道是否有人可以帮助我。

  • 我应该使用哪些新类?
  • 是否需要大量重新编码?
  • 任何参考都会有很大帮助(一直在查看 stackoverflow,但没有找到全面的指南)

下面是我为 zf1 插入/更新/删除/选择的代码

插入

$userdata = array('email' => $email,
    'name' => $name,
    'gender' => $gender,
    'location' => $location,
    'fbid' => $fbid,
    'ipaddress' => $ipaddress,
    'jointimestamp'=>new Zend_Db_Expr('NOW()'));      
$this->dbo->insert('users', $userdata);
return $this->dbo->lastInsertId();

选择

if($this->dbo->fetchOne('SELECT id FROM users WHERE username = ?',$username)){
    return true;
}else{
    return false;
}

更新

$userdata = array($field => $value);
$this->dbo->update('user', $userdata, $this->dbo->quoteInto('useremail = ?', $this->user));

另外,zf2 有 fetchall、fetchone、fetchrow 等方法吗?

感谢任何建议。

【问题讨论】:

  • 在您要求其他人为您完成工作之前,请尝试以 the Documentation 开头;)
  • @Sam 谢谢你想通了!

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


【解决方案1】:

阅读文档后,我提出了 zf2 的插入/选择/更新查询。以下是代码 sn-p 以供将来可能需要它的人使用。我正在使用 Zend\Db\Select 作为我的自定义 mvc 框架的独立类。

适配器

$adapter = new Zend\Db\Adapter\Adapter(array(
            'driver'   => 'pdo_mysql',
            'host' => DB_HOST,
            'database' => DB_PREFIX.DB_NAME,
            'username' => DB_USER,
            'password' => DB_PW
));

选择

$select = $this->sql->select()
            ->from('table')
            ->join('users', 'users.id = table.userid')
            ->order("table.createdtimestamp DESC");
$statement = $this->sql->prepareStatementForSqlObject($select);
$result =  $statement->execute();
$resultSet = new ResultSet();
$resultSet->initialize($result);
return $resultSet->toArray();

插入

$insert = $this->sql->insert()
        ->into("messages");
$userdata = array(
         'message' => $message,
         'createdtimestamp'=>new Zend\Db\Sql\Expression('NOW()'),
         'userid' => $userid);    
$insert->values($userdata );    
$statement = $this->sql->prepareStatementForSqlObject($insert);
$result =  $statement->execute();
//return last insert id
return $this->dbo->getDriver()->getLastGeneratedValue();

更新

$update = $this->sql->update()
        ->table('posts')
        ->where(array('pid'=>$pid));
$numbercountarr = array('numbercount' =>  new Zend\Db\Sql\Expression('numbercount+ 1'));
$update->set($numbercountarr );
$statement = $this->sql->prepareStatementForSqlObject($update);
result =  $statement->execute();

计算行数

$statement = $this->sql->prepareStatementForSqlObject($query);
$result =  $statement->execute();
return $result->count();

希望这可以帮助需要它的人节省一些时间。

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 2018-11-24
    • 2019-12-23
    • 2021-11-06
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多