2

1つのビューに3つのテーブルのデータを表示する方法。JTableを使用すると、そのJTableにバインドされたデータのみを表示できるため、これを手伝ってください。

モデルでのこれまでの私のコード(機能していません):

public function getEntireProject(){
    $item_id = $this->getItem()->id;

    $db =& JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('*');
    $query->from('#__project_part_1 AS a');
    $query->leftJoin('#__project_part_2 AS u ON a.uuid = u.uuid');
    $query->leftJoin('#__project_part_3 AS y ON a.uuid = y.uuid');
    $query->where('a.id = '. (int) $item_id);
    $db->setQuery($query);
    return $db->loadResult();
}

protected function loadFormData()
{
    // Check the session for previously entered form data.
    $data = JFactory::getApplication()->getUserState('com_web_projects.edit.webproject.data', array());

    if (empty($data)) {
        $data = $this->getEntireProject();
    }

    return $data;
}
4

2 に答える 2

5

getItem 関数を上書きしてみてください。これは、ビューで get('Item') を呼び出している場合にも役立ちます。-

public function getItem($pk = null){
    if ($item = parent::getItem($pk)) {
        $db =& JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('*');
        $query->from('#__project_part_1 AS a');
        $query->leftJoin('#__project_part_2 AS u ON a.uuid = u.uuid');
        $query->leftJoin('#__project_part_3 AS y ON a.uuid = y.uuid');
        $query->where('a.id = '. (int) $item->id);
        $db->setQuery($query);          
        $item =  $db->loadAssoc();
    }   
    return $item;
}

protected function loadFormData()
{
    // Check the session for previously entered form data.
    $data = JFactory::getApplication()->getUserState('com_web_projects.edit.webproject.data', array());

    if (empty($data)) {
    $data = $this->getItem();
    }

    return $data;
}
于 2012-10-17T07:11:30.813 に答える
1

複数行の結果の場合、loadRowList()、loadAssocList()、loadAssocList($key)、loadObjectList()、loadObjectList('key') を使用します。$db->loadResult() は 1 つの結果のみを読み込みます。続きを読む.

あなたの質問を正しく理解していれば、これで問題が解決するはずです。ない場合はお尋ねください。

于 2012-10-17T06:40:13.347 に答える