Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Subqueries dengan Doktrin 2 DBAL?
Apabila memindahkan aplikasi Zend Framework ke Doctrine 2.5 DBAL, anda mungkin menghadapi cabaran untuk menyertai subqueries. Artikel ini bertujuan untuk menyediakan panduan komprehensif untuk isu khusus ini.
Pertanyaan Zend_Db yang diberikan menampilkan subkueri untuk mendapatkan cap masa minimum untuk tinjauan pengguna tertentu. Pertanyaan utama kemudiannya menyertai subkueri ini untuk mengambil data tambahan. Matlamatnya adalah untuk meniru fungsi ini menggunakan pembina pertanyaan Doktrin 2.5.
Pada mulanya, adalah dipercayai bahawa Doktrin tidak menyokong penyertaan subkueri. Walau bagaimanapun, terdapat penyelesaiannya.
Penyelesaian adalah untuk mendapatkan SQL mentah subquery dan sertakan dalam kurungan. Sintaks gabungan menyerupai operasi gabungan biasa. Walau bagaimanapun, parameter yang digunakan dalam subkueri mesti ditakrifkan dalam pertanyaan utama.
<code class="php">$subSelect = $connection->createQueryBuilder() ->select(array('userSurveyID', 'MIN(timestamp) timestamp')) ->from('user_survey_status_entries') ->where('status = :status') ->groupBy('userSurveyID'); $select = $connection->createQueryBuilder() ->select($selectColNames) ->from('user_surveys', 'us') ->leftJoin('us', sprintf('(%s)', $subSelect->getSQL()), 'firstAccess', 'us.userSurveyID = firstAccess.userSurveyID') ->setParameter('status', UserSurveyStatus::ACCESSED) ->where('us.surveyID = :surveyID') ->setParameter('surveyID', $surveyID);</code>
Penyelesaian ini membolehkan anda menyertai subkueri dalam Doktrin 2.5 DBAL . Dengan mendapatkan SQL mentah subkueri dan menetapkan parameternya dalam pertanyaan utama, anda boleh mencapai struktur pertanyaan yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Subqueries dengan Doktrin 2 DBAL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!