Domanda

Voglio recuperare tutti i dati da 3 tabelle

utenti, proprietà e users_properties.

Quindi ho deciso che avrei usato manytomanyRowset. Ma con mia sorpresa ottengo i dati dalla tabella delle proprietà e users_properties ma nessun dato dalla tabella degli utenti. Perché? Ho bisogno di alcune colonne della tabella degli utenti c'è un modo per dire alla funzione manytomanyrowset che ho bisogno anche dei dati della tabella corrente?

questa è la mia funzione

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;
}

grazie in avavance

È stato utile?

Soluzione

Ho progettato e codificato le funzionalità di relazione tra tabelle in Zend Framework.

La risposta alla tua domanda è no, il metodo findManyToManyRowset () recupera solo le righe dalla tabella correlata, non le unisce nel corrispondente oggetto Row. Il motivo è che un oggetto Row in ZF può save () stesso nel database e, se aggiungi campi, non saprà cosa farne.

Quindi dovresti implementare un oggetto Row personalizzato per contenere sia i campi utente che la raccolta delle proprietà dell'utente - archivia le proprietà dell'utente come oggetto Rowset.

Quindi estendi __get () e __set () in modo che sappia come mappare i campi nell'array corretto quando leggi o scrivi le proprietà degli oggetti. Cioè, se si tenta di leggere o scrivere un campo che non fa parte della riga dell'utente, si ricorre alle proprietà dell'utente Rowset.

Estendi anche save () per salvare non solo la riga corrente, ma chiama anche save () nel Rowset delle proprietà dell'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top