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

Błąd limitu modelu CakePHP i HABTM

dlaczego nie użyć zachowania, które można zawierać

// you would probably want the next line in the app_model ot be able to use it with all models
$this->Post->actsAs = array('Containable')
$params['conditions'] = array(
);
$params['contain'] = array(
    'Media' => array(
        'fields' => array(
            'type', 'path', 'title'
        ),
        'limit' => 1
    )
);
$this->Post->find('all', $params);

EDYTUJ:

Właśnie tego spróbowałem i dostałem ten sql (Moduł <-> Tag):

SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1 

i

SELECT `Tag`.`id`, `ModulesTag`.`module_id`, `ModulesTag`.`tag_id` 
FROM `tags` AS `Tag` 
JOIN `modules_tags` AS `ModulesTag` 
  ON (`ModulesTag`.`module_id` IN (1, 2, 3, 4) AND `ModulesTag`.`tag_id` = `Tag`.`id`) 
WHERE `Tag`.`belongs_to` = 'Module' 
ORDER BY `Tag`.`name` ASC 
LIMIT 1

oczywiście nie może to zwrócić pożądanego wyniku, ponieważ musiałbyś wykonać zapytanie dla każdego wyniku modułu (co z kolei spowodowałoby zbyt wiele zapytań).

Podsumowując, zwróciłbym wszystkie tagi (w moim przykładzie), ponieważ narzut w zbyt wielu wierszach wyników jest lepszy niż narzut zbyt wielu zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bash - Wyprowadza zapytania SQL do zmiennej

  2. Wyszukiwanie wydajności SQL dla długich ciągów

  3. Najszybszy sposób na załadowanie danych liczbowych do tablicy python/pandas/numpy z MySQL

  4. Jak monitorować pulę połączeń dla łącznika danych .NET MySQL w usługach IIS?

  5. Grupuj daty w pętli foreach