कैसे और किन चीजों को एक वस्तु के उपयोग से खंड में संयोजित किया जाता है?


21

नीचे वांछित SQL को देखते हुए, जहां Cond1 और Cond2 मिलना चाहिए या Cond3 चयन के लिए मिलना चाहिए, getQuery()इसे प्राप्त करने के लिए उपयोग करने का सही तरीका क्या है ?

वांछित एसक्यूएल: कोष्ठक के भीतर कंडीशन 1 और कंडीशन 2)

SELECT * FROM #__myTable 
WHERE (condition1=true AND condition2=true) OR condition3=true

चेनिंग के साथ: या में निर्दिष्ट> कहां ()

$query = $db->getQuery(true);
$query->select('* FROM #__myTable')
->where('condition1 = true AND condition2 = true','OR')
->where('condition3 = true');

परिणामी SQL: (SQL गुम कोष्ठक है)

SELECT * FROM scm_myTable
WHERE condition1 = true AND condition2 = true OR condition3 = true

Arrays निर्दिष्ट करने के साथ या -> जहां ()

$query = $db->getQuery(true);
$conditions12 = array(
    'condition1 = true',
    'condition2 = true'
);
$conditions3 = array(
    'condition3 = true'
);
$query->select('* FROM #__myTable')
->where($conditions12, 'OR')
->where($conditions3);

परिणामी SQL: (SQL गुम कोष्ठक है)

SELECT * FROM scm_myTable
WHERE condition1 = true OR condition2 = true OR condition3 = true

जवाबों:


20

चैनिंग के साथ, आवश्यक कोष्ठक का निर्माण करना, जिसमें वांछित एसक्यूएल शामिल है:

चेनिंग के साथ: कोष्ठक में Cond1 / 2 को निर्दिष्ट करना या लपेटना

$query = $db->getQuery(true);
$query->select('* FROM #__myTable')
->where('(condition1 = true AND condition2 = true)','OR')
->where('condition3 = true');

परिणामी SQL: (कोष्ठक शामिल है)

SELECT * FROM scm_myTable
WHERE (condition1 = true AND condition2 = true) OR condition3 = true

या का उपयोग करें या कहाँ / कहाँ

$query = $db->getQyery(true);
$query->select('*')
->from($db->quoteName('#__myTable'))
->where($db-quoteName('condition3') . ' = TRUE')
->orWhere(array($db->quoteName('condition1') . ' = TRUE', $db->quoteName('condition2') . ' = TRUE'));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.