문제

내 DB에 2 개의 테이블이 있습니다 ...

entita
ID int (11)
descrizione 바르 차 (50)
.....

publicobjects
....
모델 바르 차 (50) 필요한 모델 (이 경우 'entita')
model_id int (11)

다음과 같은 쿼리를 만들고 싶습니다.
select entita.* from entita where NOT EXISTS (select * from publicobjects where publicobjects.model = 'Entita' and publicobjects.model_id = entita.id)

사용자 정의 쿼리를 사용하지 않고 CakePHP의 모델 기능으로 어떻게이를 수행 할 수 있습니까?

감사

도움이 되었습니까?

해결책

나는 당신이 publicobjects 테이블에없는 entita 테이블에서 행을 찾으려고 노력하고 있다고 생각합니다. 그것이 정확하다고 가정하면, mysql이 그것을 찾을 수있는 SQL 쿼리가 있습니다.

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

CakePhp의 모델 로이 작업을 수행하려면 몇 가지 단계가 필요합니다. 나는 당신의 모델 이름에 대해 몇 가지 가정을했지만, 나는 틀릴 수 있고 그것들은 고칠 수 있습니다.

먼저 이것을 entita 모델에 추가하십시오.

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

이제 : Publicobjects 테이블에 누락 된 항목을 확인할 수 있습니다.

<?php
$this->Entita->find('all', array('conditions' => array('Publicobject.model_id IS NULL')));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top