Problem mit verschachtelter AND/OR-Condition

18 views
Skip to first unread message

Carsten Wawer

unread,
Mar 29, 2013, 10:05:24 PM3/29/13
to cakep...@googlegroups.com
Hallo miteinander,

vielleicht stehe ich gerade auf dem Schlauch, aber wie erstellt man in Cakephp einen SQL-Befehl wie diesen hier?

SELECT *
FROM table
WHERE id = 1 OR (column1='test1' AND id=2) OR (column1='test2' AND id=3)


Bitte nicht nach der Sinnhaftigkeit fragen, habe einen komplexeren Befehl simplifiziert um das Verständnisproblem deutlich zu machen.

Den müsste man ja eigentlich folgendermaßen darstellen:


$options = array(
'conditions' => array(
'OR' => array(
'id' => 1,
'AND' => array(
'column1' => 'test1',
'id' => 2
),
'AND' => array(
'column1' => 'test2',
'id' => 3
)
)
)
);

Wenn das zweite 'AND' das erste nicht überschreiben würde...

Kann mir jemand einen Schubser geben? Ich wäre dankbar! ;-)

Liebe Grüße!
Carsten

Mark Kessler

unread,
Apr 3, 2013, 4:46:45 AM4/3/13
to cakep...@googlegroups.com
So in etwa:

$this->Model->find('all', array('conditions' => array(
  'OR' => array(
    'id' => 1,
    'AND' => array(
      'column1' => 'test',
      'id' => 2
    ),
    'AND' => array(
      'column1' => 'test2',
      'id' => 3
    )
)));

Ich habe es jetzt nicht ausprobiert aber so müsste es funktionieren.
Gruß,
Mark

2013/3/30 Carsten Wawer <carste...@gmail.com>

--
--
Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben und
wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke.
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe "CakePHP-de für deutsche CakePHP Entwickler".
Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an cakep...@googlegroups.com
Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an cakephp-de-...@googlegroups.com
Weitere Optionen finden Sie in dieser Gruppe unter http://groups.google.com/group/cakephp-de?hl=de
---
Sie haben diese Nachricht erhalten, weil Sie der Google Groups-Gruppe CakePHP-de für deutsche CakePHP Entwickler beigetreten sind.
Um Ihr Abonnement für diese Gruppe zu beenden und keine E-Mails mehr von dieser Gruppe zu erhalten, senden Sie eine Email an cakephp-de+...@googlegroups.com.
Weitere Optionen: https://groups.google.com/groups/opt_out
 
 

Carsten Wawer

unread,
Apr 3, 2013, 4:53:03 AM4/3/13
to cakep...@googlegroups.com
Hallo Mark,

Sind deine $options nicht identisch zu meinen? Überschreiben sich
nicht auch bei Dir die beiden 'AND's gegenseitig im Array? Oder habe
ich etwas übersehen?

Liebe Grüße,
Carsten
--
>> Carsten Wawer || carste...@gmail.com
>> http://www.facebook.com/carsten.wawer || http://twitter.com/partyfrikadelle

Christoph Stickel

unread,
Apr 3, 2013, 4:56:17 AM4/3/13
to cakep...@googlegroups.com
Hallo,

ich würde mal folgendes testen:
$this->Model->find('all', array('conditions' => array(
  'OR' => array(
    'id' => 1,
    'AND' => array(
      array(
          'column1' => 'test',
          'id' => 2
      ),
       array(
          'column1' => 'test2',
         'id' => 3
       )
     )
   )
)));

Viele Grüße!
Christoph


2013/4/3 Carsten Wawer <carste...@gmail.com>



--
Layarts
Christoph Stickel
Hofener Weg 11
71686 Remseck

Mobil +49 (0) 176 210 666 09
Tel   +49 (0) 7146 538 059

E-Mail chri...@layarts.de
Website http://www.layarts.de/

Mark Kessler

unread,
Apr 3, 2013, 5:03:55 AM4/3/13
to cakep...@googlegroups.com
Stimmt, diesmal stand ich auf dem Schlauch ;). Versuch mal die Lösung von Christoph.

2013/4/3 Carsten Wawer <carste...@gmail.com>

Carsten Wawer

unread,
Apr 3, 2013, 5:22:05 AM4/3/13
to cakep...@googlegroups.com
Traumhaft! Mit Christoph Hinweis funktioniert. Hatte es zwar bereits
auseinandergebaut und anders gelöst aber für die Zukunft ist der
Hinweis sicher hilfreich.

Danke!
Reply all
Reply to author
Forward
0 new messages