CakePHP của trông giống như:
afterFind(array $results, boolean $primary = false)
Theo tài liệu:
Tham số
$primary
chỉ ra hay không mô hình hiện tại là mô hình mà các truy vấn nguồn gốc hoặc có hay không mô hình này được truy vấn như một hiệp hội. Nếu mô hình được truy vấn dưới dạng liên kết, định dạng của$results
có thể khác nhau.
Họ thể khác nhau, nhưng thử nghiệm cho thấy rằng họ không luôn khác nhau. Theo như tôi có thể nói, tham số $primary
không thực sự hữu ích. Nếu nó được đặt thành false
, bạn có thể hoặc không thể có cấu trúc dữ liệu phẳng, vì vậy bạn có thể hoặc không thể kết thúc với thông báo lỗi "không thể sử dụng chuỗi bù đắp dưới dạng mảng" đáng sợ.
Mặc dù tôi đã không thử nó chưa, suy nghĩ của tôi dựa trên các tài liệu sẽ lờ $primary
cờ hoàn toàn và chỉ cần kiểm tra các dữ liệu:
public function afterFind($results, $primary = false) {
if (array_key_exists(0, $results) {
// operate on $results[0]['User']['fieldname']
} else {
// operate on $results['fieldname']
}
return $results;
}
Đây là hackish và tôi không thích nó, nhưng có vẻ hữu ích hơn $primary
.
quy định rõ ràng, câu hỏi của tôi là:
- cờ
$primary
là gì thực sự hữu ích cho? - Tôi có đúng là không hữu ích để xác định cấu trúc của mảng
$results
hay tôi đã bỏ lỡ điều gì đó ở đó?
Đã khắc phục sự cố này ngay hôm nay. Đôi khi tập hợp kết quả $ là một mảng đa chiều, đôi khi không phải. Tôi cảm thấy như đây là một vấn đề khá lớn. – vinhboy
Tôi có thể hôn bạn. Điều này vừa cứu tôi sau khi đập đầu tôi trong 4 giờ. – bowlerae