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


How to remove zero(0) index in 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 查询中的零索引数组。

试试这个 -

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

那你为什么不使用使用记录的包装器方法来查找呢?永远不要在可以避免的情况下使用 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
        )
)

看看

        $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);

你可以使用 first() 方法:

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

或者你也可以使用 firstOrFail() 方法,如果失败,它将如何异常。

--更新--

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

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

2-在第3373行左右找到"函数查询()"。

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

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

这可能会起作用。