嗨,我想获得单张记录 -
如果我使用的是find
或findById
则工作正常。
$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];
}
这可能会起作用。