Отношение много ко многим

Я хочу получить все данные из 3 таблиц

users, properties и users_properties.

Поэтому я решил, что буду использовать manytomanyRowset. Но, к моему удивлению, я получаю данные из таблицы свойств и таблицы users_properties, но нет данных из таблицы users. Это почему? Мне нужны некоторые столбцы из таблицы users. Есть ли способ сообщить функции manytomanyrowset, что мне также нужны данные из текущей таблицы?

это моя функция

public function fetchRegisteredProperties()
{

    $userTable = $this->getTable();
    require_once APPLICATION_PATH . '/models/DbTable/UsersPropertiesDB.php';
    require_once APPLICATION_PATH . '/models/DbTable/PropertiesDB.php';

    $propertiesRowset = $table->fetchAll();
    $allProperties = array();

    foreach ($propertiesRowset as $row) {
        $propertiesRowset = $row->findManyToManyRowset(
          'Model_DbTable_Properties','Model_DbTable_UsersProperties');
        $allProperties = array_merge($tempArray,$propertiesRowset->toArray()); 
    }

    return $allProperties;
}

спасибо заранее

1 ответ

Решение

Я разработал и закодировал функции табличных отношений в Zend Framework.

Ответ на ваш вопрос - нет, findManyToManyRowset() Метод только выбирает строки из связанной таблицы, но не объединяет их в соответствующий объект Row. Причина в том, что объект Row в ZF может save() обратно в базу данных, и если вы добавите поля, он не будет знать, что с ними делать.

Поэтому вы должны реализовать пользовательский объект Row для хранения как пользовательских полей, так и коллекции пользовательских свойств - сохраните пользовательские свойства как объект Rowset.

Затем продлите __get() а также __set() чтобы он знал, как отображать поля в правильный массив при чтении или записи свойств объекта. То есть, если кто-то пытается прочитать или записать поле, которое не является частью пользовательской строки, оно возвращается к пользовательским свойствам Rowset.

Также продлить save() сохранить не только текущую строку, но и вызвать save() на Rowset пользовательских свойств.

Другие вопросы по тегам