Khi tôi chạy truy vấn sql bằng trình bao bọc ZF, tất cả các giá trị số sẽ trả về dưới dạng chuỗi. Tôi cần thay đổi những gì để các giá trị sẽ trở lại trong cùng một kiểu dữ liệu giống như trong DB?tìm nạp một số nguyên từ DB bằng Zend Framework trả về giá trị dưới dạng chuỗi
Trả lời
Tôi đã triển khai rất nhiều mã Zend_Db
trong khung công tác Zend.
Như đã nêu khác, lý do mà Zend_Db
trả về chuỗi thay vì số nguyên gốc PHP hoặc phao nổi là phần mở rộng cơ sở dữ liệu của PHP trả về chuỗi. Và lý do cho điều đó là có thể không có kiểu PHP gốc để biểu diễn một kiểu cơ sở dữ liệu nào đó. Ví dụ: BIGINT
của MySQL là số nguyên có ký hiệu 64 bit. Theo mặc định, loại PHP int
được giới hạn ở các giá trị 32 bit, vì vậy nếu bạn tìm nạp dữ liệu từ cơ sở dữ liệu và chuyển đổi hoàn toàn dữ liệu sang int
, một số giá trị có thể bị cắt bớt. Có một số trường hợp tương tự khác, cho float
và ngày, v.v.
Sử dụng biểu diễn chuỗi cho tất cả các loại dữ liệu là cách tốt nhất để duy trì đơn giản và nhất quán, an toàn tránh mất dữ liệu và tránh viết nhiều nhà cung cấp- mã trường hợp đặc biệt cụ thể để thực hiện ánh xạ kiểu dữ liệu. Mã bổ sung đó cũng sẽ chịu một hình phạt hiệu suất. Vì vậy, nếu bạn có trường hợp cụ thể nơi bạn cần kết quả cơ sở dữ liệu được ánh xạ tới các kiểu dữ liệu PHP gốc, bạn nên tự thực hiện nó trong mã ứng dụng của mình (ví dụ: trong lớp tùy chỉnh Zend_Db_Table_Row
).
Cơ sở dữ liệu thường trả lại tập hợp kết quả dưới dạng văn bản. Trừ khi bộ chuyển đổi db của bạn chuyển đổi mọi thứ cho bạn (và âm thanh như của bạn không), tất cả các giá trị sẽ trở lại như chuỗi - ngày tháng, enums, vv cũng như số nguyên.
Nếu bạn đang xử lý một số lượng nhỏ các bảng chỉ với một vài trường số nguyên, chỉ cần chuyển đổi tay chúng. Nếu bạn đang đối phó với một tình huống phức tạp hơn một chút, bạn có thể lặp qua các cột bằng cách sử dụng các định nghĩa cơ sở dữ liệu (xem sqlite_fetch_column_types()
, v.v.). Nếu tình hình của bạn phức tạp hơn có vẻ hợp lý đối với các giải pháp này, hãy xem xét chuyển sang một khuôn khổ có tính năng hơn.
Có vẻ như điều này đã được yêu cầu trong quá khứ nhưng chưa được triển khai. #ZF-300 được nhận xét lần cuối vào ngày 9 tháng 1 năm 09.
Có thể bạn có thể chia sẻ lý do tại sao bạn muốn thực hiện việc định kiểu và chúng tôi có thể giúp bạn theo cách khác? PHP khá dễ chịu khi nói đến các kiểu dữ liệu biến ...
Đối với một ví dụ về cách sử dụng một tùy chỉnh Zend_Db_Table_Row
để có được các loại dữ liệu chính xác, như Bill Karwin đề nghị, có một cái nhìn tại các lớp học ở đây: http://www.zfsnippets.com/snippets/view/id/70
Nó có thể được thực hiện trong mô hình của bạn như:
class YourTableName extends Zend_Db_Table_Abstract
{
protected $_name = 'your_table_name';
protected $_rowClass = 'Model_Row_Abstract';
}
Bạn có thể muốn thay đổi kiểu dữ liệu của Model_Row_Abstract
cho tinyint
thành bool
nếu bạn sử dụng nó đúng để giữ giá trị boolean.
- 1. Cách trả về giá trị từ Python dưới dạng JSON?
- 2. Số nguyên được định dạng bằng dấu phẩy khi được tìm nạp từ một tài nguyên
- 3. Tìm nạp chỉ một hàng từ MySQL bằng khung công tác Zend DB
- 4. Cách trả về giá trị Enum từ một chuỗi?
- 5. Zend Framework: Cách chọn DB với nhiều thông số?
- 6. Tạo một số nguyên từ ba giá trị bool dưới dạng bit trong C++
- 7. Tại sao ghép một giá trị boolean trả về một số nguyên?
- 8. cách trả về hàm clojure dưới dạng chuỗi
- 9. Cách trả về giá trị từ __init__ bằng Python?
- 10. Hibernate Trả lại giá trị số nguyên
- 11. Nhận giá trị phao từ số nguyên
- 12. Lấy giá trị số nguyên từ enum
- 13. Bộ lọc AngularJS trả về html dưới dạng chuỗi
- 14. Cách lấy số nguyên từ MySQL dưới dạng số nguyên trong PHP?
- 15. Bắt giá trị trả về từ Task.Run
- 16. Tại sao 'valueAsNumber' trả lại NaN dưới dạng giá trị?
- 17. Giá trị ô tham chiếu dưới dạng chuỗi trong Excel
- 18. Cách trả về XML trong ứng dụng Zend Framework
- 19. Giá trị trả về từ mã Java
- 20. quan học thuyết trên trường số nguyên trả về chuỗi
- 21. Tại sao get_FOO_display() trả về giá trị số nguyên khi thông tin ghi nhật ký (django)?
- 22. Tìm nạp giá trị duy nhất từ SQLite trong android
- 23. Trả về giá trị tùy chỉnh từ hộp thoại WPF
- 24. Zend Framework 2 autoloading
- 25. MVC trả về một phần xem dưới dạng JSON
- 26. jQuery: Trả về giá trị của hộp kiểm dưới dạng mảng?
- 27. Zend Framework 2 DateSelect/MonthSelect định dạng
- 28. Có cách nào để trả về HTML trong một hàm PHP không? (không xây dựng giá trị trả về dưới dạng chuỗi)
- 29. C# - Tìm nạp giá trị thuộc tính từ lớp con
- 30. Zend Framework: Dữ liệu Populating DB để một dropdown yếu tố Zend Form