it-swarm-es.tech

¿Cómo usar los datos de otra tabla en mi opinión?

Estoy luchando por aprender Joomla 3.xy estoy desconcertado sobre cómo unir mi registro a otra tabla y usar los datos unidos en mi vista/formulario. Estoy familiarizado con los componentes que usan algo similar a esto: (Solo he incluido fragmentos parciales porque el enfoque con el que estoy familiarizado parece bastante común en otros componentes y mis resultados de Google)

modelos/mymodel.php

// JOIN and retrieve the data I'm interested in:
function getData()
    $query = $db->getQuery(true);
    $query->select('a.name, b.lastvisitDate FROM #__mytable AS a')
          ->innerJoin('#__users AS b ON a.created_by = b.id');

views\myview\tmpl\default.php

// The data from the joined data is available for display something like this
echo "<span>" . $this->item->lastvisitDate. "</span>"

Ahora, con Joomla 3, veo una serie de funciones como prepareTable, getTable, getForm, loadFormData y getItem.

Lo mejor que puedo decir es que utiliza formularios/XML predefinidos, campos y demás que describen la tabla primaria con gran detalle. Puedo cambiar datos en getItem que se muestran en la vista, pero no tengo idea de cómo obtener datos utilizables desde el segundo ¡mesa!

¿Cuál es la mejor forma de unir mi tabla principal a otra y poder mostrar esa información con la vista? ( por ejemplo. ÚNETE a myTable.created_by en #__ users.id para obtener algo como la fecha de la última visita)

5
Al Knight

No estoy seguro de si esta es la mejor forma de hacerlo (por favor comente si hay una mejor manera), o si es exactamente lo que está buscando, pero este es mi enfoque utilizando un artículo de Joomla como ejemplo:

¡Archivos de interés

  • componentes\com_content\views\article\view.html.php
  • componentes\com_content\models\article.php

Modificar view.html.php

Cerca de la parte superior de public function display($tpl = null), verá una línea como esta:

$this->item = $this->get('Item');

Obtiene los datos del artículo de la función getItem ubicada en models\article.php

Duplica esa línea a algo como esto:

$this->item = $this->get('Mydata');

Modificar article.php

Ahora tiene que agregar la función para obtener los datos que le interesan con este bloque de código: (nombrado de acuerdo a cómo lo está llamando, precedido por 'get')

 public function getMydata($pk = null)
{
    $myItemObj = new stdClass();
    $myItemObj->something = 'something you need';

    $db    = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('*')
    ->from($db->quoteName('#__users'))
    ->where($db->quoteName('id') . ' = 467');
    $db->setQuery($query);
    $myItemObj->MydbObj = $db->loadObject();

    return $myItemObj;
}

Desde su punto de vista, ahora puede acceder a esos datos de esta manera:

echo "<span>". $this->myData->something ."</span>";
echo "<span>". $this->myData->MydbObj->username ."</span>";

Es posible que desee comprobar sar varios modelos en un componente MVC si necesita una solución más completa.

7
GDP