Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyertai Subqueries dengan Doktrin 2 DBAL?

Bagaimana untuk Menyertai Subqueries dengan Doktrin 2 DBAL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-23 23:50:29669semak imbas

How to Join Subqueries with Doctrine 2 DBAL?

Menyertai Subqueries dengan Doctrine 2 DBAL

Pengenalan

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.

Masalahnya

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.

Penyertaan Subkueri dalam Doktrin 2.5

Pada mulanya, adalah dipercayai bahawa Doktrin tidak menyokong penyertaan subkueri. Walau bagaimanapun, terdapat penyelesaiannya.

Penyelesaian

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.

Coretan Kod

<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>

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn