Tôi có mối quan hệ nhiều-nhiều và khi tôi tải một thực thể ở một phía của mối quan hệ này, tôi muốn xem một ArrayCollection gồm các thực thể liên quan ở phía bên kia làm thuộc tính của nó. Tuy nhiên, điều này không xảy ra - không có phần tử nào trong ArrayCollection được tải, trong khi đó trong cơ sở dữ liệu tôi có thể thấy các mục nhập có liên quan. Lý do có thể là gì?
Đây là mã của tôi:
Một mặt của mối quan hệ, lớp ConsolidatedReport:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\Response", inversedBy="consolidatedReports")
* @ORM\JoinTable(name="con_rprt_responses")
*/
phản hồi $ riêng tư;
Mặt khác của mối quan hệ, lớp phản hồi:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\ConsolidatedReport\ConsolidatedReport", mappedBy="responses")
*/
$báo cáo hợp nhất riêng tư;
Đây là hàm tôi chạy để lấy phiên bản ConsolidatedReport. Hàm này nằm trong một dịch vụ được gọi từ vùng chứa:
/**
* Chọn báo cáo tổng hợp với id đã cho.
*
* @param chuỗi $id
*
* @return Báo cáo hợp nhất
*
* @ném NonExistentConsolidatedReportException nếu khảo sát không tồn tại
*/
chọn chức năng công cộng($id)
{
$report = $this->repository->findOneBy(array('id' => $id));
nếu (!$báo cáo) {
ném NonExistentConsolidatedReportException mới ($ id);
}
trả lại báo cáo $;
}'
Trong cơ sở dữ liệu, có một bảng "con_rprt_responses" với hai cột "consolidated_reports_id" và "response_id". Tuy nhiên, trong trình lược tả, tôi không thấy bất kỳ truy vấn nào đối với bảng này.
Điều gì có thể xảy ra ở đây?
Cập nhật: Vui lòng xem câu trả lời của tôi cho câu hỏi này bên dưới, nó hiệu quả với tôi.
Tôi sẽ tìm nạp="HẤP DẪN"
Đã thêm vào thuộc tính $responses của lớp ConsolidatedReport và nó đã hoạt động.
Mã bây giờ trông như thế này:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\Response", inversedBy="consolidatedReports", tìm nạp="EAGER")
* @ORM\JoinTable(name="con_rprt_responses")
*/
phản hồi $ riêng tư;
Thêm thông tin ở đây: http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#by-eager-loading
Nếu bất kỳ ai biết lý do tại sao bộ sưu tập các thực thể liên quan không được tải mà không chỉ định rõ ràng việc trích xuất EAGER - vui lòng chia sẻ kiến thức của bạn, điều đó sẽ được đánh giá rất cao!
Tôi là một lập trình viên xuất sắc, rất giỏi!