JTable - свойства доступа, которые не относятся к указанной таблице

Предположим, у меня есть две таблицы со следующим столбцом:

#__table1 - id, col1, col2
#__table2 - id, col3, col4

Я создал класс JTable в папке таблицы моего компонента:

class ComponentNameTableTable1 extends JTable
{
    function __construct(&$db)
    {
        parent::__construct('#__table1', 'id', $db);
    }
}

В методе хранения JTable мне нужно получить доступ к col3 & col4

public function store($updateNulls = false)
{
     $col1 = $this->col1; // This is happening
     $col2 = $this->col2; // This is not happening
     $col3 = $this->col3; // This is not happening
     $col4 = $this->col4; // This is not happening
     return parent::store($updateNulls);
}

Обратите внимание, что я передал данные из моей модели в JTable следующим образом:

public function save($data)
{
    // $data here is an array of containing following value:
    // $data = array('col1' => 'somevalue1', 'col2' => 'somevalue2', 'col3' => 'somevalue3', 'col4' => 'somevalue4');

    // It is then passed to the JTable with following:

    $table = $this->getTable();
    $key   = $table->getKeyName();

    // Get Primary Key Value
    $pk = (!empty($data[$key]) ? $data[$key] : (int) $this->getState($this->getName() . '.id'));

    $isNew = true;

    try
    {
        if ($pk > 0)
        {
            $table->load($pk);
            $isNew = false;
        }

        // Bind the data.
        $table->bind($data);

        // Check the data.
        if (!$table->check())
        {
            return false;
        }

        // Store the data.
        if (!$table->store())
        {
            return false;
        }

        // Clean the cache.
        $this->cleanCache();
    }
    catch (Exception $ex)
    {
        throw new RuntimeException('There was an error while saving data');
    }

    $this->setState($this->getName() . '.id', $table->$key);
    $this->setState($this->getName() . '.new', $isNew);

    return true;
}

Мои исследования

  

Кажется, что JTable выполняет некоторую функцию, которая дополнительно фильтрует $ data и удаляет ключи, которых нет в таблице #__1. Если кто-нибудь может потащить меня к этому столу, я могу переопределить его дальше. Я попытался посмотреть на метод bind (). Но, похоже, это не фильтрация этих $ data, поскольку я пытался распечатать данные из $ data до того, как bind () get выполняется в JTable-функции.

1 голос | спросил Sahil Purav 26 Maypm15 2015, 13:39:52

1 ответ


1

Из моего понимания вы должны использовать несколько экземпляров JTable в своей модели, если у вас несколько таблиц.

Взгляните на эти модели в CMS, они могут дать вам некоторое руководство по настройке вашей модели.

https: //github. ком /Joomla /Joomla-К /BLOB /постановка /администратор /компоненты /com_installer /модель /manage.php

https: //github. ком /Joomla /Joomla-К /BLOB /постановка /администратор /компоненты /com_contenthistory /модель /compare.php

ответил Walt Sorensen 29 72015vEurope/Moscow11bEurope/MoscowSun, 29 Nov 2015 19:16:29 +0300 2015, 19:16:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132