如何在CakePHP中删除零(0)索引

时间:2014-12-12 12:04:40

标签: php cakephp

我想获得单曲 -

如果我使用的是findfindById,则此功能正常。

$this->User->findById(1); //It works (Without leading zero index)
$this->User->find('first',array('conditions'=>array('User.id'=>1))); //It also works (Without leading zero index)

当我使用$this->User->Query(...)时,它会为零(0)索引数组。

查询 -

$getUser = $this->User->Query('select * from users as User WHERE id=1');
pr($getUser);

输出 -

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 1
                    [username] => john
                    [email] => xxx@xxxxx.xxx
                    [password] => e10adc3949ba59abbe56e057f20f883e
                    [last_login] => 2014-12-10 20:46:41
                )

        )

)

以上查询应为 -

Array
(
    [User] => Array
       (
           [id] => 1
           [username] => john
           [email] => xxx@xxxxx.xxx
           [password] => e10adc3949ba59abbe56e057f20f883e
           [last_login] => 2014-12-10 20:46:41
       )
)

我正在构建一个应用程序,我正在使用cakephp和codigniter脚本。请帮帮我,我想删除CakePHP查询中的零索引数组。

4 个答案:

答案 0 :(得分:1)

试试这个 -

$getUser = $this->User->Query('select * from users WHERE id=1');
pr(array_pop($getUser));

答案 1 :(得分:0)

那你为什么不使用find记录的包装器方法呢? 永远不要使用query(),当你可以避免它。利用框架,不要与之斗争。

无论

$user = $this->User->find('first', ...);

或只是

$user = $this->User->findById(1);
// Done

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

记录的结果是:

Array (
    [User] => Array
        (
            [id] => 1
            [username] => john
            [email] => xxx@xxxxx.xxx
            [password] => e10adc3949ba59abbe56e057f20f883e
            [last_login] => 2014-12-10 20:46:41
        )
)

答案 2 :(得分:0)

您可以使用first()方法:

$getUser = $this->User->Query('select * from users as User WHERE id=1')->first();

或者您也可以使用firstOrFail()方法,如果失败则会抛出异常。

<强> - UPDATE -

我现在已经检查了cakePHP框架,通过进行以下更改,您可以删除我认为的零索引。

1-首先,请转到lib \ Cake \ Model并打开Model.php。

2-在第3373行找到“function query()”。

3-在此方法下,我们将定义一个新的查询函数,如下所示:

public function queryFirst($sql) {
    $params = func_get_args();
    $db = $this->getDataSource();
    $results =  call_user_func_array(array(&$db, 'query'), $params);

    return $results[0];
}

这可能有效。

答案 3 :(得分:0)

看看

        $getUser = $this->User->Query('select * from users as User WHERE id=1');

        $getUser = array_values($getUser[0]); 
        $getUser['User'] = $getUser[0];
        unset($getUser[0]);
        pr($getUser);