我想获得单曲 -
如果我使用的是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查询中的零索引数组。
答案 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);