Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]Cannot define NULL as part of query when defining 'limit'.
mareknn
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


witam,
przerobilem mniej wiecej calego jobeeta i teraz chcialem na jego podstawie sam cos zrobic, na razie tylko troche zmniejac i jestem w 6 dniu przy Limitowaniu Rezultatow
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/06

i jak wpisze
  1. public function getActiveJobs($max = 10)
  2. {
  3. $q = Doctrine_Query::create()
  4. ->from('JobeetJob j')
  5. ->where('j.category_id = ?', $this->getId())
  6. ->limit($max);
  7.  
  8. return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
  9. }


to wywala mi blad

Kod
500 | Internal Server Error | Doctrine_Query_Exception
Cannot define NULL as part of query when defining 'limit'.
stack trace

    * at ()
      in SF_ROOT_DIR\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Query\Abstract.php line 2047]

      2044.     {
      2045.         // We should prevent nullable query parts
      2046.         if ($queryPart === null) {
      2047.             throw new Doctrine_Query_Exception('Cannot define NULL as part of query when defining \'' . $queryPartName . '\'.');
      2048.         }
      2049.
      2050.         if ($append) {

jesli z nawiasow wywale $max = 10 i wpisze w limit samo 10 bez zmiennej to strona sie wyswietla dobrze, ale potem juz sa problemy z tym limotowaniem...

jak to mozna naprawic? jak robilem slowo w slowo z jobeetem to dzialalo, a jak pozmienialem tylko nazwy zmiennych to mam ten blad...

pozdrawiam!
Go to the top of the page
+Quote Post
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Czy kod który nam pokazałeś jest dokładnie taki sam jak ten, który się wysypuje? Sam piszesz, że zmieniałeś nazwy zmiennych, więc może i ta zmienna też powinna nazywać się inaczej.
Go to the top of the page
+Quote Post
mareknn
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


kod z bledami jest dokladnie taki jak pokazuje. tamten skopiowalem z jobeeta. do tego kroku nie bylo zadnego problemu ze zmiennymi i dzialalo ok, a przy tym wywala mi ten blad

Cytat
Cannot define NULL as part of query when defining 'limit'

cos jest z tym limitem zle, bo jak usune go z funkcji i zamienie tak:

Cytat
public function getActiveJobs()
{
$q = Doctrine_Query::create()
->from('JobeetJob j')
->where('j.category_id = ?', $this->getId())
->limit(10);

return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
}

to dziala dobrze, nawet limituje, ale potem jak juz robie kategorie to w kategoriach w ogole nie ma limitu...
Go to the top of the page
+Quote Post
Gribo
post
Post #4





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


a jak wywołujesz funkcję getActiveJobs() może jako parametr wprowadzasz zmienną o wartości null i wtedy ci się pieprzy ?


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
mareknn
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 27.01.2011

Ostrzeżenie: (0%)
-----


nie wiem co jest, jak robie wedlug jobeeta to dziala bez problemu, a jak zmieniam zmienne to jest problem...

Go to the top of the page
+Quote Post
Quadina
post
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. public function getActiveJobs($max=10)
  2. {
  3. $q = Doctrine_Query::create()
  4. ->from('JobeetJob j')
  5. ->where('j.category_id = ?', $this->getId())
  6. ->limit($max);
  7.  
  8. return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
  9. }


zobacz co wykonujesz w return! Wywołujesz rekurencyjnie tę samą funkcję którą własnie wykonujesz! Zatem w drugim wywołaniu podajesz jej za parametr obiekt Doctrine_query przekazany przy pomocy zmiennej $q. Funkcja limit nie rozumie co to obiekt i sobie go nulluje i potem wywala błąd. W returnie powinieneś mieć:
  1. return $q->execute();

Przyjrzyj się dokładnie temu co jest w lekcji 6.


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
halfdan
post
Post #7





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 20.11.2011

Ostrzeżenie: (0%)
-----


Cytat(Quadina @ 9.02.2011, 11:16:26 ) *
  1. public function getActiveJobs($max=10)
  2. {
  3. $q = Doctrine_Query::create()
  4. ->from('JobeetJob j')
  5. ->where('j.category_id = ?', $this->getId())
  6. ->limit($max);
  7.  
  8. return Doctrine_Core::getTable('JobeetJob')->getActiveJobs($q);
  9. }


zobacz co wykonujesz w return! Wywołujesz rekurencyjnie tę samą funkcję którą własnie wykonujesz! Zatem w drugim wywołaniu podajesz jej za parametr obiekt Doctrine_query przekazany przy pomocy zmiennej $q. Funkcja limit nie rozumie co to obiekt i sobie go nulluje i potem wywala błąd. W returnie powinieneś mieć:
  1. return $q->execute();

Przyjrzyj się dokładnie temu co jest w lekcji 6.


To nie prawda, w returnie powinno być to, co jest. Tylko funkcja powinna iść do innej klasy. Sprawdź, czy nie pokiełbasiłeś.
Funkcja o sygnaturce:
  1. public function getActiveJobs(Doctrine_Query $q = null)

musi iść do JobeetCategoryTable, a funkcja:
  1. public function getActiveJobs($max = 10)

musi iść do JobeetCategory.

Mogłeś też źle wpisać nazwę zmiennej:
  1. max_jobs_on_homepage

w pliku app.yml.
Ta zmienna ma się nazywać max_jobs_on_homepage a nie app_max_jobs_on_homepage
Za to, żeby ją pobrać musimy użyć:
  1. sfConfig::get('app_max_jobs_on_homepage')

Jeśli to o tę nazwę chodzi, to pamiętaj, że jak zmienisz nazwę w pliku konfiguracyjnym yml, a masz włączone cachowanie, to powinieneś opróżnić cache, bo inaczej Symfony nie zauważy zmian.
Powodzenia:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:27