Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [Zend] Database e Model

    Salve a tutti,
    ho un problema con la migrazione del mio sito su framework Zend.
    Ho deciso di realizzare la gestione del database attraverso dei modelli e quindi relative classi.
    Riesco ad estrarre e gestire senza grossi problemi i dati di una stessa tabella, ma non riesco a capire come posso utilizzare le join all'interno di queste classi. Premetto che utilizzo PK e FK nelle tabelle, quindi ho cercato anche di utilizzare i metodi che consentono di estrarre i record collegati a quello estratto, ma senza successo. Proverò con più calma appena possibile.
    Ma quello che proprio non riesco a capire è come effettuare le join e come poter limitare l'estrazione di alcuni campi, piuttosto che di tutti i campi di una row della tabella.

    Qualcuno riesce a darmi qualche dritta o tutorial?

    Grazie mille

    PS: per intenderci, ho usato lo stile che viene usato nel quickstart che è presente nel sito del framework Zend

  2. #2
    Ciao.
    Ad esempio nella reference per la join
    http://framework.zend.com/manual/en/....building.join
    per limit
    http://framework.zend.com/manual/en/...building.limit

    ci sta un bel tutorial anche su http://www.zendcasts.com/
    ma non usa le join (+ avanzato)


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    ciao
    se stai usando l'oggetto Zend_Db_Select alloa ti basta eseguire il metodo join
    esempio

    $select = new Zend_Db_Select($db);
    $select->from('pippo')
    ->join('paperino',
    'pippo.pippo_id = paperino.testo_id')
    ->where('pippo = ?', $pippo_id)
    ->where('paperino = ?'$ciao);

    con questa query esegui una join tra pippo e paperino,

    se vuoi limitare il risultato della ricerca aggiungi come secondo valore
    della jopin un array con i campi che vuoi recuperare

    spero di essere stato chiaro
    Chi striscia non inciampa!

  4. #4
    Originariamente inviato da whisher
    Ciao.
    Ad esempio nella reference per la join
    http://framework.zend.com/manual/en/....building.join
    per limit
    http://framework.zend.com/manual/en/...building.limit

    ci sta un bel tutorial anche su http://www.zendcasts.com/
    ma non usa le join (+ avanzato)


    Dopo dò uno sguardo

  5. #5
    Originariamente inviato da quinto
    ciao
    se stai usando l'oggetto Zend_Db_Select alloa ti basta eseguire il metodo join
    esempio

    $select = new Zend_Db_Select($db);
    $select->from('pippo')
    ->join('paperino',
    'pippo.pippo_id = paperino.testo_id')
    ->where('pippo = ?', $pippo_id)
    ->where('paperino = ?'$ciao);

    con questa query esegui una join tra pippo e paperino,

    se vuoi limitare il risultato della ricerca aggiungi come secondo valore
    della jopin un array con i campi che vuoi recuperare

    spero di essere stato chiaro
    Il problema è che io uso delle classi che modellano il DB al posto delle tabelle. Quindi non avrò $select->from('nomeTabella').

  6. #6
    il database esiste, quindi le tabelle hanno anche un nome
    non ti basta creare un metodo che restituisca il nome della tabella?

    • $select = new Zend_Db_Select($db);
      $select->from($classe->getTabella());
      //resto del codice
    Chi striscia non inciampa!

  7. #7
    Ok, alla fine sono riuscito a fare tutto come previsto dai manuali. Avevo solo bisogno di mettermi un pò sotto a ragionare.
    Ora però non riesco a capire come mettere in join più tabelle.
    Se provo ad inserire più ->join() non va. Se ne uso una sola non riesco a capire come specificare quali sono i campi che consentono di mettere in join, visto che il secondo parametro non è un array.

    Idee?

    Tnx

  8. #8
    Ok, found it.
    In pratica quando vi sono più join se estraggo le colonne nelle join precedenti ho errore, se lo faccio nell'ultima tutto va bene.
    Quindi, si mette tutto in join senza estrarre alcuna colonna nelle join che non siano l'ultima, mentre in questa gli si mette come colonne da estrarre tutte quelle desiderate.

    Ho visto che è possibile fare le join semplicemente utilizzando i from e poi mettendole in join con il metodo where, mi sbaglio o funziona? in pratica come è possibile fare anche in semplice SQL.

    Ciao e grazie

    Zend

  9. #9
    A dire il vero esiste il metodo join per fare le join tra più tabelle...
    si può anche fare a colèpi di where ma vengono query disumane e difficili poi da trattare...


    buon lavoro
    Chi striscia non inciampa!

  10. #10
    Originariamente inviato da quinto
    A dire il vero esiste il metodo join per fare le join tra più tabelle...
    si può anche fare a colèpi di where ma vengono query disumane e difficili poi da trattare...


    buon lavoro
    Si, alla fine ho fatto una cosa del genere:

    select()
    from(tab1)
    ->join(tab2,campotab1=campotab2,array())
    ->join(tab3,campotab1=campotab3,array(campidesidera ti))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.