J'essaie de construire un gameliste en ce moment, je me débats pour obtenir les informations détaillées de l'équipe.
#__ je
id team_home team_guest
1 1 2
2 2 3
#__ équipe
id name
1 My Team Name
2 Another Team Name
3 The third Team
Mon code :
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('a.*');
$query->select('b.name', 'home_name');
$query->select('c.name', 'guest_name');
$query->from($db->quoteName('#__game', 'a'));
$query->join('LEFT', $db->quoteName('#__team', 'b') . ' ON ' . $db->quoteName('a.team_home') . ' = ' . $db->quoteName('b.id'));
$query->join('LEFT', $db->quoteName('#__team', 'c') . ' ON ' . $db->quoteName('a.team_guest') . ' = ' . $db->quoteName('c.id'));
$query->where($db->quoteName('a.published') . ' = 1');
$query->order('a.kickoff ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options', 'com_component'))
{
$columns = $db->getTableColumns('#__game');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
echo '<pre>' . var_export($items,true).'</pre>';
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '', 'Select an option');
foreach($items as $item)
{
//$options[] = JHtml::_('select.option', $item->id, $item->home_name . ' vs ' . $item->guest_name);
}
}
return $options;
Cela crée un seul "nom" à l'intérieur de l'objet de retour (sûr, sa même clé pour la maison et l'invité) et l'invité écrase la valeur de la maison.
Qu'est-ce que je dois écrire pour la jointure pour obtenir les noms pour la maison et l'invité étant placé dans différentes clés d'objet?
Je l'ai eu maintenant, je devais définir le comme dans les tableaux sélectionnés:
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('a.*');
$query->select($db->quoteName(array('b.name'),array('home_name')));
$query->select($db->quoteName(array('c.name'),array('guest_name')));
...