Doctrine 1.2를 사용하고 있는데, 어떻게 객체를 json/array 형식으로 가져올 수 있습니까?Doctrine 객체를 json으로 변환하는 방법
$user = Doctrine_Query::create()
->select('u.id, u.username, u.firstname, u.lastname')
->from('User u')
->orderby('u.id')
->execute();
Doctrine 1.2를 사용하고 있는데, 어떻게 객체를 json/array 형식으로 가져올 수 있습니까?Doctrine 객체를 json으로 변환하는 방법
$user = Doctrine_Query::create()
->select('u.id, u.username, u.firstname, u.lastname')
->from('User u')
->orderby('u.id')
->execute();
해결책은 JSON 문자열이 PHP 배열을 변환 json_encode
를 사용하고, 관심 데이터 만의 개봉을 포함하는 간단한 배열을 가지고는 $user
개체에 toArray()
방법을 사용하고있을 수 있습니다.
이런 식으로 뭔가, 나는 가정 :
$user = Doctrine_Query::create()
->select('u.id, u.username, u.firstname, u.lastname')
->from('User u')
->orderby('u.id')
->execute();
$userArray = $user->toArray();
$json = json_encode($userArray);
이 (테스트하지,하지만 너무 멀리 작동해서는 안됩니다 ...)
$users2 = Doctrine_Query::create()
->select('u.id, u.username, u.firstname, u.lastname')
->from('User u')
->orderby('u.id');
$tmp2 = $users2->fetchArray();
나는 이유를 알고하지 않습니다 toArray()은 테이블의 다른 필드 인 을 제공합니다. 그것은 "암호"필드를 가지고 fetchArray() 내가 올바른 필드를 쿼리에서 제공 할 수 있습니다.
toArray()
Array
(
[0] => Array
(
[id] => 1
[username] => user1
[password] => password
[firstname] => John
[lastname] => Smith
)
fetchArray() JSON에 대한
Array
(
[0] => Array
(
[id] => 1
[username] => user1
[firstname] => John
[lastname] => Smith
)
toArray는 객체를 배열 형식으로 직접 변환하는 것입니다. fetchArray는 실제로 변환이 아니라 더 많은 추출이라는 점에서 좀 더 영리합니다. – Oddman
:
$user->exportTo('json');
;-)
$ 기록 -> exportTo와 문제 ('json')은 모두 레코드 필드를 내보낼 것입니다. 대부분의 경우 바람직하지 않은 동작입니다 (예 :이 json 조각을 브라우저에 전달해야하는 경우).
$user = Doctrine_Query::create()
->select('u.id, u.name')
->from('User u')
->addWhere('u.id = ?', $id)
->fetchOne();
$user_json = $user->exportTo('json');
$의 user_json 사항은 다음과 같이해야합니다 : 수출의 범위를 제한하는 한 가지 방법은 DQL의 필드를 선택 지정하는 것입니다
{
"id": 123,
"name": "John Smith",
"password": null,
"deleted": null
}
그래서이 노출하지 않습니다 "암호"필드 값을하지만, 은에서 기본 데이터베이스 구조를 노출합니다. 다시 말하지만, 우리가 원하는 것이 아닐 수도 있습니다.
$user = Doctrine_Query::create()
->select('u.id, u.name')
->from('User u')
->addWhere('u.id = ?', $id)
->fetchOne(array(), Doctrine::HYDRATE_ARRAY);
$user_json = json_encode($user);
을이 경우 JSON에서 같은 모양을 :
{
"id": 123,
"name": "John Smith"
}
이제 Doctrine ORM Transformations가 발생한 경우, 그것은 할 수 있습니다 은 내가하는 일은 배열 한 후 JSON 인코딩으로 가져 오기 + 선택 DQL 필드를 지정할 수있다 엔티티를 스칼라 배열로 변환하고 뒤로
class User implements ITransformable {
use Transformable;
// ...
echo json_encode($user->toArray());
답변으로 연결되는 링크! –
두 번째 응답은 매우 좋습니다. [http : // stackoverflow.COM/질문/6706485/방법 - 투 - 인코딩 - 교리 - 단체 - 투 - JSON -에 - 심포니 - 2-0 - 아약스 - 응용 프로그램] [1] [1] : HTTP : // 유래 .com/questions/6706485/how-to-encode-doctrine-entities-to-json-in-symfony-2-0-ajax-application – csadan