Empfehlungen: Erweiterte Suche

QueryData & Conditions

Datenbankobjekte strukturieren und validieren

QueryData & Conditions

Beitragvon subnoodle » Do 13. Aug 2009, 09:18

Hallo,

ich versuche gerade die Datensatzmenge auf die Ownership der Datensätze per Behavior einzuschränken.
Dazu gibt's ja extra den Callback beforeFind($queryData).

Nun fuxt mich $queryData etwas:
Entgegen der Doku ist es nicht nur ein Param-String wie bei Find etc. sondern das ganze Model Object.
Daher kann ich weder den array $queryData["conditions"], wie aus der Doku anzunehmen verwenden (den $queryData ist ein Object und keine array var), noch das Construct $queryData->conditions benutzen (unknown property).

Meine Frage sind daher:
- Wie schaffe ich es, die Ergebnismenge über beforeFind einzuschränken; bzw. wie 'versorge' ich queryData richtig?
- Wie erreiche ich das ganze auch mit abhängingen Tabellen des Models -> in Select-Boxen des Models sollen auch nur die Datensätze der jeweiligen Owner erscheinen. Cake generiert dieses Query aber (Stand alone, nicht als Join, da es zur Befüllung der Selectbox so gebraucht wird) selbstständig. Bringt es was, das in den Relations zu tun? (Also var $belongsTo etc.)?? Oder werden Selectbox-Queries wieder aus anderen Daten genereirt?

Beim Speichern der Daten habe ich ein anderes Problem:
beforeSave: Hier erhalte ich die Daten und kann das Feld "modiefied_by" richtig setzen.
afterSave($created): Liefert mir zwar die wunderbare $created-Variable, mit der ich sehen kann, dass der Datensatz neu ist; aber ich kann nicht mehr speichern.
Daher die (vielleicht einfache) Frage: Wie stelle ich in beforeSave EINFACH fest, ob der Datensatz schon existiert? (Um dann abhängig davon auch created_by zu setzten oder eben unverändert zu lassen).

Bin für hilfreiches sehr, sehr dankbar!
Gruß, Sam
Do it, but do it well!
Benutzeravatar
subnoodle
 
Beiträge: 2
Registriert: Mi 12. Aug 2009, 17:01

Re: QueryData & Conditions

Beitragvon Dogo » Di 22. Sep 2009, 03:30

Hey Sam,

ich weiss nicht, ob Dir das weiterhilft, aber ich habe vielleicht was zum Pre-Speicher-Check für Dich.
Ich nutze es, um vor dem Speichern eines Bildes zu gucken, ob die eingegebene Keywords (Tags) schon existieren. Es liegt bei mir im Picture-Model. Nur, damit Du die Umgebung kennst, aus der es kommt.

Code: Alles auswählen
    function beforeSave() {
    //Kommaseparierte Liste von Tags als Tags speichern
    if(isset($this->data[$this->name]['temp_tags'])) {
        $tags = explode(",", $this->data[$this->name]['temp_tags']);
        unset($this->data[$this->name]['temp_tags']);
   
        foreach($tags as $tag) {
            $tag = trim($tag);
           
            //ID vorhanden oder nicht?
            $id = $this->Keyword->findByName($tag);
            if(!$id['Keyword']['id']) {
                //Tag neu anlegen
                $this->Keyword->create();
                $this->Keyword->save(array('name' => $tag));
                $id['Keyword']['id'] = $this->Keyword->id;
            }
           
            $this->data['Keyword']['Keyword'][] = $id['Keyword']['id'];
        }
    }


Gruß,

Dogo
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal

Re: QueryData & Conditions

Beitragvon euromark » Di 22. Sep 2009, 10:06

hey dogo
das kann so doch niemals funktionieren!

da fehlt doch ein
return true;
am Ende

ansonsten wird nie gespeichert!!!
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: QueryData & Conditions

Beitragvon Dogo » Di 22. Sep 2009, 14:18

Also bisher funktioniert es. Allerdings habe ich noch nicht versucht, Daten von "Picture" nach "beforeSave" zu speichern. Aber ich behalte es im Kopf, falls das mal Probleme machen sollte, wenn ich es brauche.
Danke!
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast