Sur http://docs.joomla.org/Selecting_data_using_JDatabase , il n'y a pas de méthode documentée pour écrire une sous-requête à l'aide de JDatabase.
https://gist.github.com/gunjanpatel/8663333 illustre une façon d'y parvenir avec (quelques bits omis):
$subQuery = $db->getQuery(true);
$query = $db->getQuery(true);
// Create the base subQuery select statement.
$subQuery->select('*')
->from($db->quoteName('#__sub_table'))
->where($db->quoteName('subTest') . ' = ' . $db->quote('1'));
// Create the base select statement.
$query->select('*')
->from($db->quoteName('#__table'))
->where($db->quoteName('state') . ' = ' . $db->quote('1'))
->where($db->quoteName('subCheckIn') . ' IN (' . $subQuery->__toString() . ')')
->order($db->quoteName('ordering') . ' ASC');
// Set the query and load the result.
$db->setQuery($query);
Cela semble être une bonne approche plausible, mais y en a-t-il une meilleure?
__toString()
) est une méthode "magique".