标签: zend-db

Zend Framework Db选择加入表帮助

我有这个问题:


SELECT g.title, g.asin, g.platform_id, r.rank
        FROM games g
        INNER JOIN ranks r ON ( g.id = r.game_id )
        ORDER BY r.rank DESC
        LIMIT 5`

Run Code Online (Sandbox Code Playgroud)

现在,这是我的JOIN使用,Zend_Db_Select但它给了我数组错误


$query = $this->select();
        $query->from(array('g' => 'games'), array());
        $query->join(array('r' => 'ranks'), 'g.id = r.game_id', array('g.title', 'g.asin', 'g.platform_id', 'r.rank'));
        $query->order('r.rank DESC');
        $query->limit($top);
        $resultRows = $this->fetchAll($query);
        return $resultRows;
Run Code Online (Sandbox Code Playgroud)

谁知道我可能做错了什么?我希望显示"游戏"中的所有列以及排名表中的"排名"列.

sql select zend-framework join zend-db

5
推荐指数
2
解决办法
2万
查看次数

SQL:只将新行/记录插入表中?

我正在定期解析json feed并且只需要从feed中插入最新用户并忽略现有用户.

我认为我需要的是ON DUPLICATE KEY UPDATEINSERT IGNORE基于一些搜索,但我不太确定我问的是什么 - 例如:

users
1     John
2     Bob
Run Code Online (Sandbox Code Playgroud)

部分JSON:

{ userid:1, name:'John' },
{ userid:2, name:'Bob' },
{ userid:3, name:'Jeff' }
Run Code Online (Sandbox Code Playgroud)

从这个饲料我只想插入杰夫.我可以通过所有用户做一个简单的循环,并做一个简单的SELECT查询,看看用户id是否已经在表中,如果不是我做INSERT,但我怀疑它不是一个有效和实用的方法.

顺便说一句,如果有人愿意提供具体的答案,我正在使用Zend_Db进行数据库交互:)我不介意一般的战略解决方案.

php mysql sql zend-framework zend-db

5
推荐指数
1
解决办法
7980
查看次数

Zend Framework:如何在使用DbTable Auth Adapter时检查其他列?

目前,我正在定期DbTable Auth Adapter:

protected function _getAuthAdapter($formData)
{       
    $dbAdapter = Zend_Db_Table::getDefaultAdapter();
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
    $authAdapter->setTableName('users')
        ->setIdentityColumn('username')
        ->setCredentialColumn('password');
    $authAdapter->setIdentity($formData['username']);
    $authAdapter->setCredential(md5($formData['password']));
    return $authAdapter;
}
Run Code Online (Sandbox Code Playgroud)

但我想检查数据库中的其他列(IsActive例如).我不知道是否可以使用适配器完成此操作.如何才能做到这一点?

zend-framework zend-auth zend-db

5
推荐指数
1
解决办法
2557
查看次数

Zend DB更新中的OR子句?

我想用OR子句进行Zend db更新.什么是相同的声明:

UPDATE mail
SET message_read = 1
WHERE id = 5
OR id = 10
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-db-table zend-db

5
推荐指数
1
解决办法
1756
查看次数

如何使用Zend框架编写子查询重构WITH子句?

我想WITH在Zend框架中使用SQL查询中的语法,SQL看起来像这样:

WITH t AS
(SELECT item_id, row_number() OVER (ORDER BY some_criteria DESC) rn
   FROM orders)
SELECT t2.rn, t2.item_id
  FROM t t1 JOIN t t2 ON (t2.rn > t1.rn)
 WHERE t1.item_id = 145;
Run Code Online (Sandbox Code Playgroud)

我怎么能在Zend Framework中这样做?用Zend_Db_Select?有什么建议?

sql oracle zend-framework zend-db zend-db-select

5
推荐指数
1
解决办法
937
查看次数

如何使用Zend获取有关此PDO MySql错误的更多信息

在我的PHP脚本中,我运行一个更新语句,如下所示:

$this->_db->update('names', $data, $this->_db->quoteInto('id = ?', $obj->id));
Run Code Online (Sandbox Code Playgroud)

db句柄是Zend_Db_Adapter_Abstract实例(PDO MySql种类).

问题是更新失败,我似乎无法获得有关错误的更多信息.

该错误发生在try/catch块中.当我发现错误时,我运行:

$db->getProfiler()->getLastQueryProfile();
Run Code Online (Sandbox Code Playgroud)

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Zend_Db_Profiler_Query Object
(
    [_query:protected] => begin
    [_queryType:protected] => 64
    [_startedMicrotime:protected] => 1352892002.6064
    [_endedMicrotime:protected] => 1352892002.6066
    [_boundParams:protected] => Array
        (
        )
Run Code Online (Sandbox Code Playgroud)

我知道它说没有参数绑定,但我真的不认为是这种情况.我认为不知怎的'最后一次查询'不是我认为的那样.

其次,当我发现错误时,我也会运行:

$db->getConnection()->errorInfo();
Run Code Online (Sandbox Code Playgroud)

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Array
(
    [0] => 00000
    [1] => 
    [2] => 
)
Run Code Online (Sandbox Code Playgroud)

显然这不是很有帮助.

有任何想法吗?如何获得有关错误的更多信息?

谢谢!

php mysql zend-db

5
推荐指数
1
解决办法
1318
查看次数

喜欢在zend框架2中的查询

我使用Zend框架2.x并面对问题,因为我已经搜索了很多.我想在查询中使用like子句,但每次都会给出错误:

这是我的努力:

$sql = new Sql($this->adapter);
$select = $sql->select()->columns(
array('user_profile_id', 'profile_login_name'))->from($this->table)->where->like(
       'profile_login_name', '%'.$strSearch.'%');
echo $select->getSqlString(); die;
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误:

致命错误:在第131行的 /var/www/YAAB/branches/admin/models/Model/UserTable.php中调用未定义的方法Zend\Db\Sql\Where :: getSqlString()

我也使用了Zend\Db\Sql\Predicate但这也给出了错误.

所以我的问题是

  1. 如何在zend框架2中使用查询中的like子句?
  2. 我的代码有什么问题?

请尽快回复,因为它很紧急.

php zend-db zend-framework2

5
推荐指数
3
解决办法
2万
查看次数

ZF2 - BjyAuthorize - 如何从数据库中获取规则和保护

我正在使用BjyAuthorize和Zend Framework2来实现授权,并且能够成功地集成来自数据库的角色.现在我想从数据库表中获取规则和保护.我怎样才能做到这一点?

doctrine zend-db zend-framework2 bjyauthorize

5
推荐指数
2
解决办法
2572
查看次数

Zend Framework:如何通过指定列的值查找表行?

我正在实现我的模型,就像快速入门指南一样.

在我的模型中,我试图实现一个findByToken()方法.当前find()方法接受一个$id参数,但我想通过不同列的值来查找.

//excerpt from the quickstart guide
public function find($id, Default_Model_Guestbook $guestbook)
{
    $result = $this->getDbTable()->find($id);
    if (0 == count($result)) {
        return;
    }
    $row = $result->current();
    $guestbook->setId($row->id)
              ->setEmail($row->email)
              ->setComment($row->comment)
              ->setCreated($row->created);
}
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情,但我觉得它不起作用:

$db = $this->getDbTable();
$where = $db->getAdapter()->quoteInto('token = ?', $token);
$result = $db->find($where);
Run Code Online (Sandbox Code Playgroud)

通过指定列的值查找行的正确方法是什么?

zend-framework zend-db-table zend-db

4
推荐指数
1
解决办法
2万
查看次数

Zend 2中两个表的联合

我想在zf2中使用where子句将两个表联合起来: -

table1 app_followers
table2 app_users
where condition可以是任何东西
,并按updated_date排序.

请让我知道zend 2的查询.

谢谢..

mysql zend-framework zend-db zend-framework2 zend-framework3

4
推荐指数
1
解决办法
65
查看次数