对象json_encode在linux server cakephp 3

时间:2017-07-12 05:03:23

标签: php json cakephp cakephp-3.x

我在Linux服务器上遇到了一个可怕的问题。我现在不明白该怎么做。

我的问题是在Linux服务器中我的脚本运行正常而没有任何错误,但是当我使用一个对象进行JSON编码时,它返回false。

请任何帮助。提前谢谢。

public function ajaxDataSearch() {
    $this->loadModel('ViewDocketHistorys');
    $this->render(false);
    $this->viewBuilder()->layout('false');
    if ($this->request->is(['post'])) {
        $DocketNo = $this->request->data['DocketNo'];

       $SearchData = $this->ViewDocketHistorys->find()
                ->where(['DocketNo' => $DocketNo])
                ->last();
        $Jsondate = json_encode($SearchData);
        echo $Jsondate;
    }
}

调试查询数据时

debug($SearchData); exit;

输出:

object(App\Model\Entity\ViewDocketHistory) {
'MasterID' => (int) 311,
'DocketNo' => 'fhfghfghf',
'[new]' => false,
'[accessible]' => [
    '*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'ViewDocketHistorys'}

当我调试JSON编码

debug($Jsondate); exit;

输出:

false

2 个答案:

答案 0 :(得分:0)

上次找到解决方案当我使用UNION创建视图时,我必须确保相应列的数据类型相同(或者至少相似,足以使其转换为另一列)。在当前的情况下,视图的第一列是'column1',除了BLOB之外没有任何数据类型定义可以理解它。

如果你真的需要这个作为一个观点,你可以试试......

SELECT e.ID AS ID, 
   NULL        AS table_field,
   ...etc...
   'e'         AS type
FROM table1 AS e
 UNION ALL
 SELECT
    NULL         AS ID,
    k.table_field AS table_field, 
   ...etc...
   'k'          AS type
 FROM table2 AS k;

详情here

答案 1 :(得分:0)

您可以尝试:

$Jsondate = json_encode($SearchData->toArray());

- > toArray()会将实体类转换为干净的数组,之后,json_decode会收到JavaScript Object Notation的正确结构。