<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum CakePHP.org.pl - Model-Widok-Kontroler]]></title>
	<link rel="self" href="http://forum.cakephp.org.pl/feed/atom/forum/4/"/>
	<updated>2011-11-11T11:24:36Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.cakephp.org.pl/</id>
		<entry>
			<title type="html"><![CDATA[wyszukiwarka rekordów]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/180/wyszukiwarka-rekordow/new/posts/"/>
			<summary type="html"><![CDATA[<p>witam, mam takie pytanie jak zrobić wyszukiwarkę pojedynczego rekordu z po sród wielu, tzn. załóżmy ze mam bazę klientów np.100 i nie chce wyświetlać wszystkich rekordów, tylko jeden konkretny np po nr tel albo po nazwisku nr pesel? tak by wyświetliło mi konkretny rekord(kartę klienta)? formularz załóżmy że miał by kilka pozycji np. imię, nazwisko,nr pesel,nr kont, nr klienta,adres, i żeby można było wyszukać po jednym z tych pól lub po wszystkich by zacieśnić wyniki wyszukiwania?&nbsp; Czy ktoś ma jakiś pomysł jak skonstruować taka wyszukiwarkę? Dodam ze jestem początkujacy w cakephp.</p>]]></summary>
			<author>
				<name><![CDATA[stinger]]></name>
				<uri>http://forum.cakephp.org.pl/user/339/</uri>
			</author>
			<updated>2011-11-11T11:24:36Z</updated>
			<id>http://forum.cakephp.org.pl/topic/180/wyszukiwarka-rekordow/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Sposób wyświetlania powiązanych modeli]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/178/sposob-wyswietlania-powiazanych-modeli/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam. Piszę tutaj bo właściwie nigdzie nie znalazłem odpowiedzi.<br />Posiadam następującą rzecz w kontrolerze (tak, wiem, równie dobrze można to zrobić w modelu, ale mniejsza o to):<br /></p><div class="codebox"><pre><code>$this-&gt;Album-&gt;bindModel(
            array(
                &#039;hasMany&#039;=&gt;array(
                    &#039;Photo&#039;=&gt;array(
                        &#039;className&#039;=&gt;&#039;Photo&#039;,
                    ),
                    &#039;Album&#039;=&gt;array(
                        &#039;className&#039;=&gt;&#039;Album&#039;,
                        )
                )
            )
        );</code></pre></div><p>Zwróćcie uwagę, że powiązałem model z nim samym - to zamierzone działanie.<br />W wyniku zadziałania metodą find(&#039;all&#039;) dostaję:<br /></p><div class="codebox"><pre><code>Array
(
    [Album] =&gt; Array
        (
            [id] =&gt; 14
            [f_name] =&gt; Jakis Album
            [0] =&gt; Array
                (
                    [f_name] =&gt; Inny album
                    [id] =&gt; 15
                    [id_parent] =&gt; 14
                    [Photo] =&gt; Array
                        (
                            [0] =&gt; Array
                                (
                                    [id] =&gt; 1069
                                    [f_name] =&gt; Jakieś zdjęcie
                                   
                                )

                            [1] =&gt; Array
                                (
....</code></pre></div><p>Teraz chodzi mi o to, że w miejscu gdzie następuje zagnieżdżenie w tablicy tabeli Album tablicy Album wyskakuję mi piękne okrągłe 0. A wolałbym żeby w tym miejscu znajdował się jakiś napis. Czy da się to jakoś zmienić? Z góry dzięki!</p>]]></summary>
			<author>
				<name><![CDATA[kubuscmg]]></name>
				<uri>http://forum.cakephp.org.pl/user/308/</uri>
			</author>
			<updated>2011-11-02T20:52:58Z</updated>
			<id>http://forum.cakephp.org.pl/topic/178/sposob-wyswietlania-powiazanych-modeli/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[kontroler]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/176/kontroler/new/posts/"/>
			<summary type="html"><![CDATA[<p>Czy można jakoś w CakePHP stworzyć kontroler który nie będzie miał odpowiadającej mu tabeli w bazie danych. Jeśli próbuje tak zrobić pojawia mi się błąd &quot;Missing Database Table&quot;<br />Można to jakoś obejść. <br />Proszę o pomoc</p>]]></summary>
			<author>
				<name><![CDATA[quiteraven]]></name>
				<uri>http://forum.cakephp.org.pl/user/331/</uri>
			</author>
			<updated>2011-08-24T17:47:47Z</updated>
			<id>http://forum.cakephp.org.pl/topic/176/kontroler/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Behaviours - zachowania]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/174/behaviours-zachowania/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam. Czy znacie jakieś tutoriale, które by wyjaśniały tę kwestię?(Behaviours) Chodzi mi o to że np nie wiem jak wyglądałaby struktura bazy danych i operowanie na niej, gdy zawierałaby w modelu:<br /></p><div class="codebox"><pre><code>var $actAs = &#039;Tree&#039;;</code></pre></div><p>Możecie mi pomóc? Czy chodziłoby tu o hierarchiczny model bazy danych? W jakich celach się to używa? Będę wdzięczny za odpowiedź.</p>]]></summary>
			<author>
				<name><![CDATA[kubuscmg]]></name>
				<uri>http://forum.cakephp.org.pl/user/308/</uri>
			</author>
			<updated>2011-08-06T11:05:54Z</updated>
			<id>http://forum.cakephp.org.pl/topic/174/behaviours-zachowania/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Sposób na wyświetlenie elementów na podstawie relacji HABTM]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/165/sposob-na-wyswietlenie-elementow-na-podstawie-relacji-habtm/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam,</p><p>Sytuacja wygląda tak, piszę aplikację w cakePHP 1.3, mam 4 tabele w postaci (podaje pola tylko istotne):</p><p>discs:<br /> - id<br /> - user_id</p><p>users:<br /> - id</p><p>tags:<br /> - id</p><p>discs_tags<br /> - id<br /> - disc_id<br /> - tag_id</p><p>Do nich mam modele:<br />User: $hasMany =&gt; &#039;Disc&#039;</p><p>Disc: $belongsTo =&gt; &#039;User&#039;; #hasManyAndBelongsTo =&gt; &#039;Tag&#039;</p><p>Tag: $belongsTo =&gt; &#039;User&#039;; #hasManyAndBelongsTo =&gt; &#039;Disc&#039;</p><p>W moim tags_controller.php mam akcję show($name), która ma wyświetlić płyty w ramach tagu, ale stronicowane, i tu pojawia się problem.<br />Jeżeli użyję kodu (pisane z głowy):</p><div class="codebox"><pre><code>$conditions = array (
    &#039;conditions&#039; =&gt; array(
        &#039;Tag.name&#039; =&gt; $name
    )
);

$this-&gt;Tag-&gt;recursive = 2;
this-&gt;set($this-&gt;Tag-&gt;find(&#039;first&#039;, $conditions));</code></pre></div><p>w widoku mam dostęp do wszystkich płyt w ramach taga a dla każdej płyty mogę wyświetlić dane o autorze.<br />Problem polega na tym że nie mogę skorzystać helpera do page&#039;owania bo find nie zwraca tych danych w wyniku zapytania.</p><p>No i teraz pojawia się pytanie. jak skonstruować zapytanie żeby otrzymać listę płyt z danego taga zwróconą przez paginator?</p><p>W cakePHP pracuję od niedawna i tak naprawdę dopiero się go uczę, także dzięki za wyrozumiałość, ten framework na 100% jeszcze mnie czymś zaskoczy.</p>]]></summary>
			<author>
				<name><![CDATA[saigon]]></name>
				<uri>http://forum.cakephp.org.pl/user/313/</uri>
			</author>
			<updated>2011-01-21T13:07:41Z</updated>
			<id>http://forum.cakephp.org.pl/topic/165/sposob-na-wyswietlenie-elementow-na-podstawie-relacji-habtm/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Edycja, update rekordu znajac jego id]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/163/edycja-update-rekordu-znajac-jego-id/new/posts/"/>
			<summary type="html"><![CDATA[<p>Muszę dokonać update rekordu, znam jego id, oraz wartość pola którą chcę updatnąć?</p><p>Czy zatem mogę edytować tylko jedno pole tego rekordu, czy muszę od nowa stworzyć rekord? Jeśli tak to jaką funkcją / metodą :&gt;</p><p>Już sobie poradziłem, temat uważam za zamknięty.</p>]]></summary>
			<author>
				<name><![CDATA[kra1986]]></name>
				<uri>http://forum.cakephp.org.pl/user/309/</uri>
			</author>
			<updated>2011-01-16T18:07:06Z</updated>
			<id>http://forum.cakephp.org.pl/topic/163/edycja-update-rekordu-znajac-jego-id/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Uruchomienie metody modelu]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/162/uruchomienie-metody-modelu/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam, </p><p>W pierwszej kolejności zwracam się z zapytaniem czy requestAction, może się przyczynić do spowolnienia aplikacji?<br />Idąc tym tropem postanowiłem w controllerze, odpalić metodę innego modelu, jednakże napotkałem na problemy;<br />z app_controller, odpalam metodę modelu basket:<br />$this-&gt;basket-&gt;getBasketId($user_id);<br />W odpowiedzi wyświetla się &quot;fatal error&quot;:<br />Call to a member function getBasketId() on a non-object</p><p>Dzięki za poradę oraz za pomoc.</p>]]></summary>
			<author>
				<name><![CDATA[kra1986]]></name>
				<uri>http://forum.cakephp.org.pl/user/309/</uri>
			</author>
			<updated>2011-01-08T15:27:09Z</updated>
			<id>http://forum.cakephp.org.pl/topic/162/uruchomienie-metody-modelu/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[przeslanie zmiennej w redirect?]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/160/przeslanie-zmiennej-w-redirect/new/posts/"/>
			<summary type="html"><![CDATA[<p>Hej,<br />Robie zapisywanie dodanego komentarza w bazie, a potem redirect do listy komentarzy. Chce, aby wyswietlil mi sie fajny komunikat, dlatego potrzebuje przeslac pewną zmienną do kontrolera komentarze, czyli do innego kontrolera niz domyslnie.</p><p>Czy jest jakas mozliwosc, aby tę zmienną jakoś przesłać razem z redirectem? I nie chce tego przesylac jako parametr funkcji wlasnie..</p><p>Bede wdzieczny za wskazowki..</p><p>Pozdrawiam</p>]]></summary>
			<author>
				<name><![CDATA[Zeppelin]]></name>
				<uri>http://forum.cakephp.org.pl/user/274/</uri>
			</author>
			<updated>2010-12-23T08:19:10Z</updated>
			<id>http://forum.cakephp.org.pl/topic/160/przeslanie-zmiennej-w-redirect/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Wyswietlanie zewnetrznych danych]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/157/wyswietlanie-zewnetrznych-danych/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam,<br />Hi, <br />Uzywam zewnetrzego zrodla jakim sa wiadomosci rss opisane w tym tutorialu: <br /><a href="http://blog.loadsys.com/2009/06/19/cakephp-rss-feed-datasource/">http://blog.loadsys.com/2009/06/19/cake … atasource/</a> <br />Konfiugracja bazy danych: <br />var $googleNews = array( <br />&#039;datasource&#039; =&gt; &#039;rss&#039;, <br />&#039;feedUrl&#039; =&gt; &#039;http://news.google.com/news? <br />pz=1&amp;ned=us&amp;hl=en&amp;output=rss&#039;, <br />&#039;encoding&#039; =&gt; &#039;UTF-8&#039;, <br />&#039;cacheTime&#039; =&gt; &#039;+1 day&#039;, <br />Model: <br />&lt;?php class GoogleNews extends AppModel { <br />var $name =&#039;News&#039;; <br />var $useTable = false; <br />var $useDbConfig = &#039;googleNews&#039;; <br />} </p><p>?&gt; <br />Jak chce uruchomic aplikacje otrzymuje error:<br />Error: Database table google_news for model GoogleNews was not found. <br />Ale jak stworze tabele google_news w bazie danych cake czyta dane z niej a nie z zewnetrznego zrodla<br />from my database. Co jest zle ? w modelu zadeklarowalem ze nie uzywam bazy danych ani tabeli lokalnej, czy ktos moze mi pomoc?</p>]]></summary>
			<author>
				<name><![CDATA[jasiufila]]></name>
				<uri>http://forum.cakephp.org.pl/user/305/</uri>
			</author>
			<updated>2010-12-05T19:52:45Z</updated>
			<id>http://forum.cakephp.org.pl/topic/157/wyswietlanie-zewnetrznych-danych/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Paginate i order]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/150/paginate-i-order/new/posts/"/>
			<summary type="html"><![CDATA[<p>Chcę zrobić paginację w categoriach (lista wpisów z danej kategorii), ale wywala mi błąd gdy wpisuję w order date_posted (w tabeli categories go nie ma, za to jest w tabeli advertisments) - zatem ustawiając paginate tak jak poniżej </p><div class="codebox"><pre><code>var $paginate = array(&#039;limit&#039; =&gt; 3, &#039;order&#039; =&gt; array(&#039;Advertisment.date_posted&#039; =&gt; &#039;desc&#039;));</code></pre></div><p>otrzymuję taki błąd</p><div class="codebox"><pre><code>SQL Error: 1054: Unknown column &#039;Advertisment.date_posted&#039; in &#039;order clause&#039;</code></pre></div><p>jak zatem odnieść się do pola date_posted w innej tabeli (tj. advertisments).</p><p>Pozdrawiam.</p>]]></summary>
			<author>
				<name><![CDATA[JaRo]]></name>
				<uri>http://forum.cakephp.org.pl/user/289/</uri>
			</author>
			<updated>2010-07-29T19:00:29Z</updated>
			<id>http://forum.cakephp.org.pl/topic/150/paginate-i-order/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Zmienna globalna dla controllera]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/149/zmienna-globalna-dla-controllera/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam, </p><p>Chciałbym ustawić globalnie zmienną &quot;$posted&quot; w controllerze(i wyświetlić ją w widoku), tak, aby w zależności od tego, czy post został napisany, dziś, wczoraj, czy też 5 dni temu wyświetlał się odpowiedni tekst.</p><p>Zrobiłem coś takiego:<br /></p><div class="codebox"><pre><code>    $today = date(&#039;Y-m-d&#039;);
    $d = date(&#039;d&#039;)-1;
    $yesterday = date(&#039;Y-m-&#039;.$d.&#039;&#039;);
    $hour =  substr($advertisment[&#039;Advertisment&#039;][&#039;date_posted&#039;], 11, 5);
    $posted = substr($advertisment[&#039;Advertisment&#039;][&#039;date_posted&#039;], 0, 10);</code></pre></div><div class="codebox"><pre><code>&lt;?php if($posted == $today) { echo &#039;Dzisiaj o &#039;.$hour.&#039;&#039;; } elseif($posted == $yesterday) { echo &#039;Wczoraj o &#039;.$hour.&#039;&#039;; } else { echo substr($advertisment[&#039;Advertisment&#039;][&#039;date_posted&#039;], 0, 16); } ?&gt;</code></pre></div><p>Jak zapisać to wszystko jako funkcję w controllerze i wyświetlać tylko jedną zmienną?</p><p>Czy funkcja ma być w beforefilter? Przy każdym warunku dać return i na końcu set zmienna, $zmienna?<br />Jeżeli tak to prosiłbym o przykładową funkcję bo coś mi nie wychodzi.</p><p>Pozdrawiam.</p>]]></summary>
			<author>
				<name><![CDATA[JaRo]]></name>
				<uri>http://forum.cakephp.org.pl/user/289/</uri>
			</author>
			<updated>2010-07-27T22:17:35Z</updated>
			<id>http://forum.cakephp.org.pl/topic/149/zmienna-globalna-dla-controllera/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Baza-Model-Relacje]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/123/bazamodelrelacje/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam, <br />dopiero zaczynam zabawę z CakePHP więc nie wiem wszystkiego. Mam pewien problem. Zacznę najpierw od bazy:<br /><a href="http://img28.imageshack.us/i/testkb.png/"><span class="postimg"><img src="http://img28.imageshack.us/img28/3646/testkb.th.png" alt="http://img28.imageshack.us/img28/3646/testkb.th.png" /></span></a><br />Tak mam ułożona bazę, stworzyłem sobie tak na szybko wykorzystując bake. Aktualnie tabele mam połączone w sposób:<br />1. Person model(dla tabeli People):<br /></p><div class="codebox"><pre><code>var $belongsTo = array(
        &#039;Type&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Type&#039;,
            &#039;foreignKey&#039; =&gt; &#039;type_id&#039;,
        ),
        &#039;Degree&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Degree&#039;,
            &#039;foreignKey&#039; =&gt; &#039;degree_id&#039;,
        ),
        &#039;Institute&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Institute&#039;,
            &#039;foreignKey&#039; =&gt; &#039;institute_id&#039;,
        )
    );</code></pre></div><p> <br />2. Type:<br /></p><div class="codebox"><pre><code>var $belongsTo = array(
        &#039;Habilitation&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Habilitation&#039;,
            &#039;foreignKey&#039; =&gt; &#039;habilitation_id&#039;,
        ),
        &#039;Professor&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Professor&#039;,
            &#039;foreignKey&#039; =&gt; &#039;professor_id&#039;,
        ),
        &#039;Doctor&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Doctor&#039;,
            &#039;foreignKey&#039; =&gt; &#039;doctor_id&#039;,
        )
    );

    var $hasMany = array(
        &#039;Person&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Person&#039;,
            &#039;foreignKey&#039; =&gt; &#039;type_id&#039;,
            &#039;dependent&#039; =&gt; false,
        )
    );</code></pre></div><p>3. i np professors:<br /></p><div class="codebox"><pre><code>var $hasMany = array(
        &#039;Type&#039; =&gt; array(
            &#039;className&#039; =&gt; &#039;Type&#039;,
            &#039;foreignKey&#039; =&gt; &#039;professor_id&#039;,
            &#039;dependent&#039; =&gt; false,
        )
    );</code></pre></div><p>pozostałe 2 doctors, habilitations są podobne(będą). Zadaniem moim jest aby przy tworzeniu nowej osoby(tabela People) zaznaczyć przypisanie do któreś z tych trzech D/P/H. Po to stworzyłem tabele types, tylko nie bardzo wiem czy dobrze relacje w cake utworzyłem. Zacząłem się zastanawiać czy do połączenie nie wykorzystać aftersave() gdzie po zapisaniu w tabeli osobnika ręcznie utworzyć połączenie do wybranej tabeli.</p><p>Jakby coś było niezrozumiałe to pytać wytłumaczę ;]</p>]]></summary>
			<author>
				<name><![CDATA[Vanord]]></name>
				<uri>http://forum.cakephp.org.pl/user/261/</uri>
			</author>
			<updated>2010-02-18T15:58:38Z</updated>
			<id>http://forum.cakephp.org.pl/topic/123/bazamodelrelacje/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[paginate('Model.metoda')]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/120/paginatemodelmetoda/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam! Dopiero zaczynam swoją &quot;przygodę&quot; z cake&#039;kiem i oczywiście napotkałem na kilka trudności - mam nadzieję, że to forum okaże się pomocne <img src="http://forum.cakephp.org.pl/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Tak jak w tytule: Używam metody paginate - w momencie kiedy chcę stronnicować zwykły model - wszystko jest ok. Niestety kiedy chciałbym stronnicować dane zwracane przez metodę (z tego samego modelu) to już nie działa tak jak powinno.</p><p>w skrócie:</p><div class="codebox"><pre><code>// wyswietla dane z modela
$this-&gt;set(&#039;data&#039;, $this-&gt;paginate(&#039;Model&#039;)); 

// wyswietla te same dane z modela jak wyżej, nawet jeśli metoda nie istnieje...
$this-&gt;set(&#039;data&#039;, $this-&gt;paginate(&#039;Model.method&#039;));</code></pre></div><br /><p>starałem się też ustawiać &#039;Model.method&#039; w public $paginate = array(...); ale bez rezultatu. Byłbym wdzięczny za pomoc!</p>]]></summary>
			<author>
				<name><![CDATA[.dex]]></name>
				<uri>http://forum.cakephp.org.pl/user/254/</uri>
			</author>
			<updated>2009-12-29T09:33:46Z</updated>
			<id>http://forum.cakephp.org.pl/topic/120/paginatemodelmetoda/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Jak policzyć ilość postów w danej kategorii?]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/117/jak-policzyc-ilosc-postow-w-danej-kategorii/new/posts/"/>
			<summary type="html"><![CDATA[<p>Witam,<br />jestem początkującym programistą i to mój drugi dzień z CakePHP. Dopiero co skończyłem tutorial jak napisać bloga.<br />Przejdźmy do problemu:</p><p>Dodałem tabelę <em>categories</em> o polach <em>id, title</em>.<br />W tabeli <em>posts</em> dodałem nowe pole <em>cat_id</em>.</p><p>Teraz wyświetlając kategorie chciałbym, aby obok nich wyświetlała się ilość postów do niej przypisanych. Jak to najprościej zrobić?</p><p>Próbowałem za pomocą takiego fragmentu kodu ale się nie udało:<br /></p><div class="codebox"><pre><code>    $this-&gt;Category-&gt;bindModel(array(&#039;hasMany&#039; =&gt; array(&#039;Post&#039;)));
    $posts = $this-&gt;Category-&gt;Post-&gt;find(&#039;count&#039;, array(&#039;conditions&#039; =&gt; array(&#039;cat_id&#039; =&gt; &#039;Category.id&#039;)));</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[trututu]]></name>
				<uri>http://forum.cakephp.org.pl/user/250/</uri>
			</author>
			<updated>2009-12-18T19:56:17Z</updated>
			<id>http://forum.cakephp.org.pl/topic/117/jak-policzyc-ilosc-postow-w-danej-kategorii/new/posts/</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[deleteThreaded]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/topic/93/deletethreaded/new/posts/"/>
			<summary type="html"><![CDATA[<p>Szukalem jakiegos zgrabnego rozwiazania (byc moze nie dokladnie i wynalazlem kolo poraz drugi)&nbsp; na usuwanie rekordow z drzewka opartego tylko o parent_id... (bez wag left i right) i splodzilem takich kilka metod modelu :</p><div class="codebox"><pre><code>        /**
         * Deletes tree element with all of his descendants.
         * @return boolean
         * @param array $records Results of find(&quot;threaded&quot;) query.
         * @param array $recordToDelete id of record to be deleted.
         * @param mixed $model Instance of model or null. When null this object will be used.
         */
        public function deleteAllThreaded($records,$recordToDelete,$model =null)
        {
            $flatArray = array(); 
            if(is_null($model))
            {
                $model = $this;
            }
            $this-&gt;toSingleDimmension($flatArray, $records,$model-&gt;name);
            $toDelete[] = $recordToDelete;
            $this-&gt;findChildren($toDelete,$flatArray,$recordToDelete);
            $model-&gt;deleteAll(array(&quot;id&quot; =&gt; $toDelete));
            
            return true;
        }
        
        /**
         * Makes multidimensional array falt. 
         * Recurrent helper method.
         * @param array $flatArray Destination array.
         * @param array $data Multidimensional array.
         * @param string $model Model name.
         */
        private function toSingleDimmension(&amp;$flatArray, $data, $modelName)
        {    
            foreach($data as $record)
            {                        
                $flatArray[] = $record[$modelName];
                if(!empty($record[&quot;children&quot;]))
                {            
                    $this-&gt;toSingleDimmension($flatArray, $record[&quot;children&quot;],$modelName);
                }
            }
        }
        
    /**
     * Searches all given records to the bottom, for children with given $parentId
     * Recurrent helper method.
     * @param array $toDelete stack for ids of record to be deleted.
     * @param array $records falt array which contains flat array created from results of find(&quot;threaded&quot;).
     * @param integer $parentId id of parent to search for.
     */
    private function findChildren(&amp;$toDelete,$records,$parentId)
    {
        foreach($records as $record)
        {
            if($record[&quot;parent_id&quot;] == $parentId)
            {
                $toDelete[] = $record[&quot;id&quot;];
                $this-&gt;findChildren($toDelete,$records,$record[&quot;id&quot;]);                
            }
        }
    }</code></pre></div><p>Wsie metody powinny sie znadywac w modelu lub w app model.</p><p>pryklad uzycia ....</p><div class="codebox"><pre><code>        public function deleteTreeElement($data)
        {
            $TemplateMenuItem = $this-&gt;getModelObject(&quot;TemplateMenuItem&quot;);
            $records = $TemplateMenuItem-&gt;find(&quot;threaded&quot;);
            
            $this-&gt;deleteAllThreaded($records,$data[&quot;elementId&quot;], $TemplateMenuItem);
                       ....
                 }</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[robal77]]></name>
				<uri>http://forum.cakephp.org.pl/user/143/</uri>
			</author>
			<updated>2009-08-05T10:45:30Z</updated>
			<id>http://forum.cakephp.org.pl/topic/93/deletethreaded/new/posts/</id>
		</entry>
</feed>

