Ergebnis 1 bis 8 von 8

Thema: JOIN mit DbTable

  1. #1
    Neuer Benutzer
    Registriert seit
    25.04.2012
    Beiträge
    14
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Standard JOIN mit DbTable

    Hallo zusammen!

    Ist es eigentlich möglich innerhalb einer SQL Abfrage die zu joinende Tabelle auch als DbTable einzubinden?
    Beispiel:

    PHP-Code:
    class Bugs1 extends Zend_Db_Table_Abstract {    
    protected 
    $_name 'bugs1';

    PHP-Code:
    class Bugs2 extends Zend_Db_Table_Abstract {
    protected 
    $_name 'bugs2';

    PHP-Code:
    $select->where('bug_status = ?''NEW')       
    ->
    join('bugs2''bugs2.id= bugs1.id','account_name')
    ->
    where('accounts.account_name = ?''Bob'); 
    Ich frage mich nur ob hier anstelle des tatsächlichen Tabellennamens bugs2 auch die DbTable angegeben werden kann?

  2. Aktuelles Zend Framework Stellenangebot


    PHP - Entwickler (m/w) - Standort Köln
    von Job Ambition GmbH

    Details ansehen
  3. #2
    Erfahrener Benutzer Avatar von SeKrebs
    Registriert seit
    04.02.2011
    Beiträge
    1.599
    Thanks
    1
    Thanked 41 Times in 40 Posts

    Standard

    http://framework.zend.com/manual/de/...tionships.html ist keine Alternative?
    Ich wunder mich nur immer wieder, dass auf der einen Seite gerne auf Db_Table zurück gegriffen wird, dann aber doch wieder Queries selbst zusammen gebaut werden. Generell spricht ja nichts dagegen, bloß wieso dann erst mit der Abstraktion anfangen?
    "KingCrunchs kleine Welt" -- Blog
    The problem with rats leaving a sinking ship is that they usually do it by gnawing holes in the bottom.

  4. The Following User Says Thank You to SeKrebs For This Useful Post:

    Fabian Köstring (26.04.2012)

  5. #3
    Neuer Benutzer
    Registriert seit
    25.04.2012
    Beiträge
    14
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Standard

    Danke!
    Zend Relations kannte ich noch nicht. Aber das ist genau das was ich gesucht habe.
    Jetzt bin ich jedoch an einem Punkt angekommen an dem ich nicht mehr weiß ob das was ich vorhabe überhaupt möglich ist.

    Zu meinem Problem.
    Ich habe folgende Datenbankstruktur:

    Benutzer
    BEN_ID
    ROL_ID
    BEN_Name
    BEN_Vorname
    ...

    Rolle
    ROL_ID
    ROL_Name
    ...

    Ressourcen
    REC_ID
    REC_Controller
    REC_Action
    REC_Modul
    ...

    Rechte
    REC_ID
    ROL_ID
    RES_ID
    ...

    Ich muss nun eine Abfrage bauen, mit der ich überprüfen kann, ob ein Benutzer aufgrund seiner Rolle auf eine Ressource zugreifen darf. Ist diese Abfrage mit dem Zend Framework umzusetzen ohne eine eigene Abfrage zu bauen?

    Vielen Dank
    MFG Stillmatic

  6. #4
    toc
    toc ist offline
    Neuer Benutzer
    Registriert seit
    18.05.2012
    Beiträge
    10
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Standard

    Mit Zend_ACL ist das imho nicht notwendig "zu Fuß" zu bauen.

  7. #5
    Erfahrener Benutzer
    Registriert seit
    12.03.2012
    Beiträge
    123
    Thanks
    1
    Thanked 2 Times in 2 Posts

    Standard

    Zitat Zitat von toc Beitrag anzeigen
    Mit Zend_ACL ist das imho nicht notwendig "zu Fuß" zu bauen.
    Kannst du das bitte näher erläutern?

  8. #6
    Erfahrener Benutzer
    Registriert seit
    03.01.2010
    Beiträge
    117
    Thanks
    4
    Thanked 12 Times in 12 Posts

    Standard

    Er meint wohl, dass man diese Datenbank-Tabellen mit den Möglichkeiten von Zend_Acl kombinieren sollte. Spart einiges an Arbeit.

  9. #7
    Erfahrener Benutzer
    Registriert seit
    12.03.2012
    Beiträge
    123
    Thanks
    1
    Thanked 2 Times in 2 Posts

    Standard

    Ich meine: Kannst du das mal bitte näher erläutern oder paar Codes geben die die Verwendung der Datenbank-Tabellen verdeutlicht?

  10. #8
    Erfahrener Benutzer
    Registriert seit
    03.01.2010
    Beiträge
    117
    Thanks
    4
    Thanked 12 Times in 12 Posts

    Standard

    Angenommen Ressource = Modul/controller/action...
    Man baut sich z.B. eine kleine Klasse /library/My/DbAcl.php (Achtung: spontaner, ungetesteter Code):

    PHP-Code:

    class My_DbAcl {

    protected 
    $_acl;

    public function 
    __construct(Zend_Db_Adapter $db) {

        
    $this->_acl = new Zend_Acl();
        
        
    // Einlesen der Resources
        
    $select $db->select()->from('tabelle_resources')->....;
        foreach(
    $select->fetchAll() as $row) {
            
    $this->_acl->addResource(new Zend_Acl_Resource($row['rec_module'].'/'.$row['rec_controller'].'/'.$row['rec_action'], $row['res_parent_id']);
        }

        
    // Das gleiche Spiel mit Roles/Rollen (Als Parent-Gruppe kann man auch hier eine definieren, z.B. ne Gast-Gruppe mit minimalen Rechten)
        
    $select $db->select()->from('tabelle_roles')->....;
        foreach(
    $select->fetchAll() as $row) {
             
    $this->_acl->addRole(new  Zend_Acl_Resource($row['rol_name'],  $row['rol_parent']);
        }

        
    // Das gleiche Spiel anschließend mit den Rechten
        
    $select $db->select()->from('tabelle_rechte')->join('tabelle_res', ...)->join('tabelle_roles', ...)->...;
        foreach(
    $select->fetchAll() as $row) {
            if(
    $row['allow']) 
                
    $this->_acl->allow($row['gruppe'], $row['resource']);
            else
                 
    $this->_acl->deny($row['gruppe'], $row['resource']);
        }

    }


    public function 
    isAllowed($gruppe$module$controller$action) {
       
    // Evtl. noch mit has() pruefen, etc.
       
    return $this->_acl->isAllowed($gruppe$module.'/'.$controller.'/'.$action);
    }



    Die Berechtigung kann dann in einem Plugin abgefragt werden.

    Hilft das weiter?

Ähnliche Themen

  1. Performance: dbtable vs. XML
    Von HerB im Forum DB
    Antworten: 20
    Letzter Beitrag: 24.01.2012, 16:54
  2. aes_encrpyt in DbTable ?
    Von sladda im Forum DB
    Antworten: 4
    Letzter Beitrag: 19.07.2011, 15:43
  3. DbTable not found
    Von b0db0y im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 16.04.2010, 18:01
  4. Antworten: 4
    Letzter Beitrag: 01.01.2010, 13:44
  5. Antworten: 1
    Letzter Beitrag: 01.10.2009, 12:51

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •