교리 수화 란 무엇입니까? [닫은]


90

나는 교리의 문서에서 수화에 대해 읽었지만 여전히 그것이 무엇인지 이해할 수 없습니다.

누군가 설명해 주시겠습니까?


Doctrine2 문서 참조 설명 수화 : doctrine-project.org/docs/orm/2.0/en/reference/...
DAWID Ohia

29
건설적이지 않습니까? 이것은 교리 내부가 어떻게 작동하는지 이해하기위한 가장 기본적인 개념 중 하나입니다.
csvan

6
이 질문은 닫히기보다는 보호되어야한다고 생각합니다.
Simon

2
@Simon 동의합니다. 질문과 수락 된 답변이 모두 인기가 있습니다. 그렇다면 보호 상태로 전환하는 것은 어떻습니까?
데니스 Kulagin

답변:


92

Hydration은 쿼리 결과를 반환하는 데 사용되는 방법입니다. 예를 들면 :

  1. HYDRATE_ARRAY -그러면 다른 배열로 표시되는 레코드 배열이 반환됩니다.

    $q = Doctrine_Query::create()
       ->from('Post p')
       ->setHydrationMode(Doctrine::HYDRATE_ARRAY);
    
    $resultSet = $q->execute(); // $resultSet is an array
    
    foreach ($resultSet as $post) {
        // $post is an array
        echo $post['title'];
    }
    
  2. HYDRATE_RECORD-그러면 개체 컬렉션 ( Doctrine_Collection ) 이 반환 됩니다.

    $q = Doctrine_Query::create()
       ->from('Post p')
       ->setHydrationMode(Doctrine::HYDRATE_RECORD); // Unnecessary, HYDATE_RECORD is default method
    
    $resultSet = $q->execute(); // $resultSet is an Doctrine_Collection object
    
    foreach ($resultSet as $post) {
        // $post is an Post object
        echo $post->getTitle();
        echo $post['title']; // Each Doctrine's Model object implements ArrayAccess interface so this is possible
        echo $post->myCustomMethod();
    }
    
  3. HYDRATE_SINGULAR_SCALAR -쿼리 결과의 첫 번째 열 값을 반환합니다.

     $q = Doctrine_Query::create()
       ->select('p.created_at')
       ->from('Post p')
       ->where('p.id = ?', 321)
       ->setHydrationMode(Doctrine::HYDRATE_SINGULAR_SCALAR); 
    
    $createdAt = $q->execute(); // $createdAt has value of first column from first record from result set (eg.: 2008-04-06 21:22:35)
    

몇 가지 방법이 더 있으며 문서에서 각각에 대해 읽을 수 있습니다.


ok .. 그래서 일반적으로 sql을 사용할 때 mysql 객체를 반환하고 mysqli_fetch_assoc를 사용하고 나 자신에 의해 정렬해야합니다 ...하지만 이제는 모두 나를 위해 정렬됩니다. 그게 수분 공급에 관한 것입니다. 정렬 된 물체 / 배열을 제공합니까?
never_had_a_name 2010

4
아니요, 결과 정렬이 아닙니다 orderBy(). 그것은 관한 어떤 쿼리 결과를 의지 는 단일 스칼라 값 수 있는지 여부, ( HYDRATE_SINGULAR_SCALAR), 중첩 된 배열은 각 데이터베이스 레코드 (대표 배열 또는 배열 HYDRATE_ARRAY) 또는 개체의 컬렉션을 ( HYDRATE_RECORD). 수행 위해서 var_dump 각 수화 모드에 대한 쿼리 결과에 - "? 어떻게 작동하는지"를 참조 할 수있는 가장 좋은 방법
Crozin 2010

4
약간의 팁입니다. 1.2에서는 HYDRATE_SINGULAR_SCALAR정의되지 않은 상수 오류를 반환합니다. HYDRATE_SINGLE_SCALAR맞다.
Darmen Amanbayev

1
메모는 다음과 같이 Doctrine::HYDRATE_RECORD현재로 알려져있다Doctrine::HYDRATE_OBJECT
스티브 타우 버

1
앞서 언급 한 문서에 대한 링크는이 답변을 더 유용하게 만듭니다.
Sean the Bean

2
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

교리 수집 객체 대신 단순한 배열 만 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.