从php对象中过滤掉一些元素
不确定这是一个php还是cakephp问题。我使用的是cakephp版本3.1.3。我有一个cakephp查询对象从php对象中过滤掉一些元素,php,json,cakephp,cakephp-3.0,Php,Json,Cakephp,Cakephp 3.0,不确定这是一个php还是cakephp问题。我使用的是cakephp版本3.1.3。我有一个cakephp查询对象$query,当我调用debug($query->toArray())时,它是这样的 当我调用json\u encode($query)时,它看起来是这样的 [ { "id": 1, "username": "asd", "password": "123", "fullname": "asd",
$query
,当我调用debug($query->toArray())时,它是这样的代码>
当我调用json\u encode($query)
时,它看起来是这样的
[
{
"id": 1,
"username": "asd",
"password": "123",
"fullname": "asd",
"email_addr": "asd@gmail.com"
}
]
如何处理$query,以便在调用json\u encode($query)
时,输出如下所示
[
{
"email_addr": "asd@gmail.com"
}
]
要仅从数据库接收字段“email\u addr”,请使用以下方法修改查询:
如果要在查询已经运行后删除所有其他字段,只需在数组上循环并修改元素:
$simplified = array();
foreach($query as $row) {
$simplified[] = array(
'email_addr' => $row->get('email_addr')
);
}
echo json_encode($simplified);
另一个重要警告是:在任何情况下都不要以明文形式存储密码。请阅读,特别是有关存储密码的部分 使用json_decode和json_encode函数。虽然@LarsEbert答案的第二部分适用于您已经加载的实体,但有一个更简单的方法:在客户实体中设置哪些字段不应编码。例如,在客户实体类定义中:protected$\u hidden=['id'、'username'、'password'、'fullname']代码>
$query->select(['email_addr']);
$simplified = array();
foreach($query as $row) {
$simplified[] = array(
'email_addr' => $row->get('email_addr')
);
}
echo json_encode($simplified);