不确定这是php还是cakephp问题。我正在使用cakephp ver3.1.3。我有一个cakephp查询对象$query
在我调用debug($query->toArray());
[
(int) 0 => object(App\Model\Entity\Customer) {
'id' => (int) 1,
'username' => 'asd',
'password' => '123',
'fullname' => 'asd',
'email_addr' => 'asd@gmail.com',
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[repository]' => 'Customers'
}
]
当我致电json_encode($query)
时,它看起来像这样;
[
{
"id": 1,
"username": "asd",
"password": "123",
"fullname": "asd",
"email_addr": "asd@gmail.com"
}
]
如何处理$ query,以便在调用json_encode($query)
时,输出看起来像这样?
[
{
"email_addr": "asd@gmail.com"
}
]
答案 0 :(得分:2)
要仅从数据库接收字段'email_addr',请使用select()
方法修改您的查询:
$query->select(['email_addr']);
如果要在查询运行后删除所有其他字段,可以循环遍历数组并修改元素:
$simplified = array();
foreach($query as $row) {
$simplified[] = array(
'email_addr' => $row->get('email_addr')
);
}
echo json_encode($simplified);
另一方面,一个重要警告:在任何情况下都不要以明文形式存储密码。请阅读this answer,特别是有关存储密码的部分!