Frage

Ich habe 2 Tabellen in meiner db ...

entità
id int (11) descrizione varchar (50) .....

Publicobjects
....
Modell varchar (50) das Modell ich brauche (in diesem Fall 'entità' )
MODEL_ID int (11)

Ich möchte eine Abfrage wie folgt machen:
select entita.* from entita where NOT EXISTS (select * from publicobjects where publicobjects.model = 'Entita' and publicobjects.model_id = entita.id)

Wie kann ich das mit den Modellfunktionen von CakePHP ohne Verwendung benutzerdefinierter Abfrage?

Danke

War es hilfreich?

Lösung

Ich glaube, Sie versuchen, Zeilen aus der entità Tabelle zu finden, die nicht in der Publicobjects Tabelle ist. Unter der Annahme, das ist richtig, hier ist die SQL-Abfrage für MySQL, es zu finden:

SELECT `entita`.*
FROM `entita` 
LEFT JOIN `publicobjects` ON (`publicobjects`.`model` = 'entita' 
    AND `publicobjects`.`model_id` = `entita`.`id`)
WHERE `publicobjects`.`model_id` IS NULL

Um diese Arbeit mit CakePHP Modellen machen ein paar Schritte. Ich habe einige Annahmen über Ihre Modellnamen gemacht, aber ich könnte falsch und das ist einfach zu beheben.

Zuerst fügen Sie diese das entità Modell:

<?php
var $hasOne = array('Publicobject' => array(
    'foreignKey' => 'model_id',
    'conditions' => 'Publicobject.model = "Entita"'));

Jetzt können Sie für Einträge überprüfen, wie dies in der Publicobjects Tabelle fehlen:

<?php
$this->Entita->find('all', array('conditions' => array('Publicobject.model_id IS NULL')));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top