Tôi đã đọc về quá trình hydrat hóa trong tài liệu của học thuyết nhưng tôi vẫn không thể hiểu nó là gì.
Ai đó có thể vui lòng giải thích?
Tôi đã đọc về quá trình hydrat hóa trong tài liệu của học thuyết nhưng tôi vẫn không thể hiểu nó là gì.
Ai đó có thể vui lòng giải thích?
Câu trả lời:
Hydrat hóa là một phương pháp được sử dụng để trả về kết quả truy vấn. Ví dụ:
HYDRATE_ARRAY
- Thao tác này sẽ trả về cho bạn một mảng bản ghi được đại diện bởi một mảng khác:
$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'];
}
HYDRATE_RECORD
- Điều này sẽ trả về cho bạn một bộ sưu tập ( Doctrine_Collection ) của các đối tượng:
$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();
}
HYDRATE_SINGULAR_SCALAR
- Sẽ trả về giá trị của cột đầu tiên trong kết quả của truy vấn:
$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)
Có một số phương pháp khác, bạn có thể đọc về từng phương pháp trong tài liệu.
orderBy()
xử lý điều này). Đó là về kết quả truy vấn của bạn là gì , cho dù đó sẽ là một giá trị vô hướng đơn ( HYDRATE_SINGULAR_SCALAR
), một mảng hay các mảng trong đó các mảng lồng nhau đại diện cho mỗi bản ghi cơ sở dữ liệu ( HYDRATE_ARRAY
) hoặc một tập hợp các đối tượng ( HYDRATE_RECORD
). Làm var_dump trên kết quả truy vấn cho mỗi chế độ hydrat hóa - "làm thế nào nó hoạt động" đó là cách tốt nhất để xem
HYDRATE_SINGULAR_SCALAR
trả về một lỗi hằng số không xác định. HYDRATE_SINGLE_SCALAR
đúng.
Doctrine::HYDRATE_RECORD
bây giờ được gọi làDoctrine::HYDRATE_OBJECT
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
Nó sẽ chỉ trả về một mảng đơn giản thay vì một đối tượng thu thập học thuyết.