Mysql
 sql >> Baza danych >  >> RDS >> Mysql

CakePHP zagnieżdżanie dwóch zapytań wybierających

prawdopodobnie musiałbyś użyć podzapytania():

$subqueryOptions = array('fields' => array('competence_id'), 'conditions' => array('employee_id'=>$user_id));
$subquery = $this->Competence->CompetenceRating->subquery('all', $subqueryOptions);

$res = $this->Competence->CompetenceRating->find('all', array(
    'conditions' => array('id NOT IN '. $subquery)
));

źródło podzapytania znajduje się tutaj:https://github. com/dereuromark/tools/blob/2.0/Lib/MyModel.php#L405 musisz to umieścić w AppModel.php

ALE myślę, że podzapytanie nie jest konieczne. Prawdopodobnie możesz z tego zrobić jedno i łatwe zapytanie:

$this->Competence->CompetenceRating->find('all', array(
    'group' => 'competence_id', 
    'conditions' => array('NOT' => 'employee_id'=>$user_id)),
    'contain' => array('Competence')
));

nie zapomnij uwzględnić kompetencji za pomocą "zawieraj", jeśli masz rekursywnie ustawioną na -1.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd krytyczny:wywołanie zwrotne tablicy musi zawierać indeksy 0 i 1

  2. Użytkownik nie ma dostępu do bazy danych

  3. MySQL - Lista ściągana w zależności od daty i kategorii

  4. PHP/MySQL:Pobierz pojedynczą ścieżkę w modelu listy sąsiedztwa

  5. MySQL — warunkowe ograniczenia klucza obcego