在Doctrine结果上使用jsonModel返回JSON数据时得到空响应-特殊字符编码问题 - php

我在获取ZF2 jsonModel从教义查询返回多个结果时遇到问题。
仅当我尝试返回数组结果时才出现此问题,而在返回单个项目时不出现
我的代码如下:

public function mosquesAction() {

    $em = $this
            ->getServiceLocator()
            ->get('Doctrine\ORM\EntityManager');
    $dql = "select m.name from \Application\Entity\Mosque m ";
    $result = $em->createQuery($dql)->getResult();

    return new JsonModel($result);   
}

清真寺实体是:

namespace Application\Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Entity */
class Mosque {

/**
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * @ORM\Column(type="integer")
 */
private $id;

/** @ORM\Column(type="string") */
private $name;

/** @ORM\Column(type="string") */
private $address;

/** @ORM\Column(type="string") */
private $email;

/** @ORM\Column(type="string") */
private $website;

/** @ORM\Column(type="string") */
private $phone;

/** @ORM\Column(type="string") */
private $mobile;

/** @ORM\Column(type="string") */
private $fax;

/** @ORM\Column(type="string") */
private $coordinates;

/** @ORM\ManyToOne(targetEntity="Canton", inversedBy="mosques") */
private $canton;

public function getId() {
    return $this->id;
}

public function getName() {
    return $this->name;
}

public function setName($name) {
    $this->name = $name;
}

}

当我将返回值更改为

return new JsonModel($result[0])

我得到结果

{“名称”:“ IDTV-Mimar Sinan Camii”}

编辑:

我想我找到了问题的根源,我发布的代码没有问题,但似乎JsonModel无法处理特殊字符,例如

伊斯兰国王基金会

所以我现在的问题是,如何在php5.3的JsonModel中编码这些字符?

在此先感谢您,我的英语不好。

参考方案

在使用了不同的选项之后,我发现问题出在与MySQL数据库的教义连接中,因此我将数据库排序规则更改为_utf8_general_i_,并向驱动程序参数添加了一些参数:

'charset' => 'utf8',
'driverOptions' => array(
     1002 => 'SET NAMES utf8'
)

现在我得到了期望的结果

{
    "id": 2,
    "name": "Föderation Islamischer Gemeinschaften LU",
    "address": "Hauptstrasse 58",
    "email": "",
    "website": "",
    "phone": "041 260 90 98",
    "mobile": "",
    "fax": "",
    "coordinates": "47.0666986,8.2812254"
}

PHP-MySQL结果转换为JSON - php

我试图了解如何将MySQL结果转换为JSON格式,以便以后可以在Javascript中使用此JSON来构建HTML表。但是我的代码只是产生大量的空值,我还不明白为什么。$result = mysqli_query($con, "SELECT * FROM Customers"); $test = json_encode($result);…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…

PHP str_replace是否具有大于13个字符的限制? - php

直到击中第13个字符为止。一旦str_ireplace在cyper数组中击中“ a”,str_ireplace就停止工作。数组的大小有限制吗?请记住,如果键入“ abgf”,我会得到“ nots”,但是如果键入“ abgrf”,我应该得到“ notes”,那么我就会得到“ notrs”。机架使我的大脑无法解决。$_cypher = array("n…