<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum CakePHP.org.pl - FindAll - oddzielna tabela]]></title>
		<link>http://forum.cakephp.org.pl/topic/43/findall-oddzielna-tabela/</link>
		<description><![CDATA[Najświeższe odpowiedzi w FindAll - oddzielna tabela.]]></description>
		<lastBuildDate>Tue, 24 Mar 2009 23:21:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/231/#p231</link>
			<description><![CDATA[<div class="quotebox"><cite>maciek napisał/a:</cite><blockquote><p>Co do enum - jest ładne, ale wolne. Spytajcie się dowolnego bazodanowca co będzie szybciej działało, a każdy wam powie że atrybuty typu całkowitego najlepiej nadają się do tworzenia kluczy ( i ich indeksowania) .<br />Przy min. 100tys. unikalnych wejść na stronę w ciągu dnia, nawet takie wydawało by się niewielkie rzeczy naprawdę mają znacznie.</p></blockquote></div><p>Mciek, skąd takie info, jeśli mogę zapytać,&nbsp; we wszytskich implementacjach pól enum, lista wartości pola jest przechowywana w nagłówku tabeli, fizycznie w rekordzie masz index odpowiadający danej wartości czyli smallint ( na dysku zajmuje trochę więcej miejsca niż tinyint, ale nie ma to praktycznie żadnego znaczenia)&nbsp; źródło : <a href="http://dev.mysql.com/doc/refman/5.1/en/enum.html.">http://dev.mysql.com/doc/refman/5.1/en/enum.html.</a></p><p>Czy ja pisałem gdzieś o tym, że enum ma być kluczem obcym/głównym ?</p><p>ORM ma swoje wady i zalety, wiele zpytań - zgadza się, ale są to małe zapytania łatwe do cachow&#039;ania (większość jest cachowana przez samą bazę), które zajmują mało czasu i nie obciążają serwera. Cóż nie wszytsko da się załatwić jednum $this-&gt;find(...);</p><p>Pozatym w kłejku mamy ORM tylko z nazwy <img src="http://forum.cakephp.org.pl/img/smilies/wink.png" width="15" height="15" alt="wink" /> </p><br /><p>Nie bardzo skumałem co miałeś na myśli z widokami, tworząc widok, możesz stworzyć do niego model i będzie działać jak każda normalna tabela (z małymi wyjątkami).</p>]]></description>
			<author><![CDATA[null@example.com (robal77)]]></author>
			<pubDate>Tue, 24 Mar 2009 23:21:40 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/231/#p231</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/230/#p230</link>
			<description><![CDATA[<div class="quotebox"><cite>robal77 napisał/a:</cite><blockquote><p>No właśnie.... to że&nbsp; pomiędzy tabelami występują relacje, nie znaczy że musisz hardcodować wszelkie możliwe asocjacje w modelach. 90% asocacji powinno być zbindowanych w locie, zależnie od potrzeb, wtedy wszytsko jest ok.</p></blockquote></div><p>A kto powiedział, że nie stosuje bindowania w locie?<br />Miałem sporo przypadków, kiedy klienci wymagali stworzenia raportu, dla którego poziom skomplikowania powodował że jego skuteczne przeniesienie na ORM&#039;a było niemożliwe. <br />Do prostych rzeczy - nadaje się idealnie, przy bardziej zaawansowanych - wysiada. Można tworzyć widoki, ale przecież nie o to w tym wszystkim chodzi...</p><p>Poza tym ilość zapytań jakie generuje Cake przy nawet niewielkim rekursywnym zagłębieniu modeli jest zatrważająca. </p><p>Co do enum - jest ładne, ale wolne. Spytajcie się dowolnego bazodanowca co będzie szybciej działało, a każdy wam powie że atrybuty typu całkowitego najlepiej nadają się do tworzenia kluczy ( i ich indeksowania) .<br />Przy min. 100tys. unikalnych wejść na stronę w ciągu dnia, nawet takie wydawało by się niewielkie rzeczy naprawdę mają znacznie.</p>]]></description>
			<author><![CDATA[null@example.com (maciek)]]></author>
			<pubDate>Tue, 24 Mar 2009 22:27:07 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/230/#p230</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/225/#p225</link>
			<description><![CDATA[<p>Fakt moze byc - 100% racji. </p><p>Osobiscie dziwi mnie ze ENUMy nie sa podstawowym typem danych gdyz w jezykach programowania sa bardzo szeroko stosowane i mega czytelne (wspomniane Y,N zamiast 1,0).</p>]]></description>
			<author><![CDATA[null@example.com (duke_piotr)]]></author>
			<pubDate>Tue, 24 Mar 2009 09:01:32 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/225/#p225</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/224/#p224</link>
			<description><![CDATA[<p>Kto powiedział że pole enum nie może być indexem, wręcz przeciwnie. Każde pole, które jest kluczem obcym powinno być również indexem (ale w momęcie, w którym wszytskie pola są indexami trzeba się podrpać po głowie i zastanowić) - bd wtedy minimalnie szybciej sortuje sobie wyniki. </p><p>Wg mnie jeżeli coś istenieje to powinno się to stosować (z rozwagą oczywiście).</p>]]></description>
			<author><![CDATA[null@example.com (robal77)]]></author>
			<pubDate>Mon, 23 Mar 2009 19:01:56 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/224/#p224</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/223/#p223</link>
			<description><![CDATA[<p>Hmm ciekawe rozwiazanie, zastosuje i sie przyjrzę.<br />Co do enum to nie powiedzialem ze bym unikal tylko ze w tym przypadku bym unikna/zamienil to pole na tablice z kluczami. Nie jestem wielkim guru SQL - raczej samoukiem i z tego co mi wiadomo to szukanie po kluczach jest szybsza metoda niz po tekscie (jakim wydaje mi sie byc enum). </p><p>Co do pola ENUM to nie wiem czemu nie jest to podstawowe pole w SQL, gdyz uwazam je za mega przydatne i sam go uzywam na kazdym kroku (choc ostatnio staram sie to eliminowac po tym jak dowiedzialem sie wlasnie o tej niezgodnosci, i tam gdzie moge czyli pola Y,N zastepowac 0,1)</p>]]></description>
			<author><![CDATA[null@example.com (duke_piotr)]]></author>
			<pubDate>Mon, 23 Mar 2009 18:52:13 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/223/#p223</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/221/#p221</link>
			<description><![CDATA[<p>@duke ... zacytowany kawałek mojej wypowiedzi był kierowany do zdaje się usera &quot;maciek&quot;.&nbsp; Poztaym pislem odwzorowaniu relacji w asocacjach modeli.</p><p>Jezeli tej tabeli slownikowej chcesz uzywac tylko&nbsp; do pracy z jednym modelem np User ...</p><p>Pozatym, $this-&gt;query powinno byc uzywane tylko w szczegolnych przypadkach... (pisales mi w jednym poscie ze unikalbys stosowania pola enum ze wzgledu na niezgodnosci w skladni sqla pomiedzy bazami ... a cale zapytania to juz mozna ? <img src="http://forum.cakephp.org.pl/img/smilies/big_smile.png" width="15" height="15" alt="big_smile" /> ) .. i do debugowania <img src="http://forum.cakephp.org.pl/img/smilies/wink.png" width="15" height="15" alt="wink" /></p><br /><div class="codebox"><pre><code>&lt;?php 
class User extends AppModel { }
// w tym samym pliku 

class Slownik extends AppModel  { // yeap konwencje kejka zezwalaja na umieszczanie kilku klas (np modeli) w tym samym pliku ;)
}</code></pre></div><p>w przecywinym wypadku musisz uzyc kompozycji ( czyli poprostu zaladowac rejestrem zewnetrzny model).</p><p>Ja mam w AppModel teaka metode ....</p><div class="codebox"><pre><code>    function getModelObject($modelName) {
        if(!$model = ClassRegistry::getObject($modelName)): // unikamy ladowania tego samogo modelu wielokrotnie
            $model = ClassRegistry::init($modelName,&quot;Model&quot;); // jednak model nie byl zaladowany wczesniej, no to zaladowac gada
            ClassRegistry::addObject($modelName,$model);    // wpychamy model do rejestru
        endif;                
        return $model;
    }


// i sposb uzycia :

$Slownik = $this-&gt;getModelObject(&quot;Slownik&#039;);</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (robal77)]]></author>
			<pubDate>Mon, 23 Mar 2009 14:52:49 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/221/#p221</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/219/#p219</link>
			<description><![CDATA[<div class="quotebox"><cite>robal77 napisał/a:</cite><blockquote><p>Od wersji 1.2 nie ma asocjacji której byś nie utworzył, no może jest kilka specyficznych wyjątków, ale i w takich przypadkach da sie obejść bez custom query.</p></blockquote></div><p>Moglbys rozwinac/podac przyklady ??</p><p>Czyli wg ciebie co jest najlepszym rozwiazaniem? Przypominam ze chodzi o query w modelu wyciagajacym tylko prosta tabele slownikowa.</p><p>Ja jakos jednak obstaje przy tym query w tym szczegolnym przypadku ale jezeli bylby to bardziej skomplikowany przyklad to rozwin cytowana mysl jesli mozesz;&gt; Bo jezeli modele nie sa polaczone to jak mam z nich cos wyciagac nie uncludujac ich w &#039;$uses&#039; lub przez dolaczenie klas w locie?</p>]]></description>
			<author><![CDATA[null@example.com (duke_piotr)]]></author>
			<pubDate>Mon, 23 Mar 2009 14:38:22 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/219/#p219</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/217/#p217</link>
			<description><![CDATA[<div class="quotebox"><cite>juby napisał/a:</cite><blockquote><p>sposob z ClassRegistry::init...nie jest za bardzo optymalny moim zdaniem. Wywylujac ta funcje nie dosc ze dolaczasz dodatkowe 73 linijki kodu (tyle zajmuje init <a href="http://api.cakephp.org/view_source/class-registry/#line-98">http://api.cakephp.org/view_source/clas … y/#line-98</a>) to jeszcze w dodatku zasmiecasz pamiec niepotrzebnym obiektem.</p></blockquote></div><p>To jest jaknabardziej optymalny sposób. Tworzenie kolejnych obiektow to zarowno wada jak i zaleta oop, pozatym ile taki obiekt może zająć miejsca w pamieci 1 - 2kb ?. Coś kosztem czegoś. </p><div class="quotebox"><cite>maciek napisał/a:</cite><blockquote><p>Osobiście query() używam bardzo rzadko, ale często wykorzystanie ORM&#039;a przy bardziej skomplikowanych zapytaniach zabija aplikacje, a w ciężkich przypadkach ich konstruowanie jest praktycznie niemożliwe.</p></blockquote></div><p>No właśnie.... to że&nbsp; pomiędzy tabelami występują relacje, nie znaczy że musisz hardcodować wszelkie możliwe asocjacje w modelach. 90% asocacji powinno być zbindowanych w locie, zależnie od potrzeb, wtedy wszytsko jest ok. </p><p>Od wersji 1.2 nie ma asocjacji której byś nie utworzył, no może jest kilka specyficznych wyjątków, ale i w takich przypadkach da sie obejść bez custom query.</p>]]></description>
			<author><![CDATA[null@example.com (robal77)]]></author>
			<pubDate>Mon, 23 Mar 2009 12:52:43 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/217/#p217</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/189/#p189</link>
			<description><![CDATA[<p>Wydaje mi się, że jednak lepszym rozwiązaniem jest wywoływanie metody modelu tabeli słownikowej. Przy pobieraniu danych poprzez&nbsp; inny model wzrost obciążenia będzie praktycznie niezauważalny, poza tym spokojnie można takie rzeczy trzymać w cache&#039;u i kłopot zniknie zupełnie. Natomiast plusem jest to, że struktura aplikacji pozostanie przejrzysta.<br />Osobiście query() używam bardzo rzadko, ale często wykorzystanie ORM&#039;a przy bardziej skomplikowanych zapytaniach zabija aplikacje, a w ciężkich przypadkach ich konstruowanie jest praktycznie niemożliwe.</p><p>@juby - 73 linijki to niezbyt wiele, zwłaszcza że nie wszystkie są wykorzystywane <img src="http://forum.cakephp.org.pl/img/smilies/smile.png" width="15" height="15" alt="smile" /> Poza tym po to używa się cache&#039;a, żeby te dodatkowe linijki wywoływać jak najrzadziej.</p>]]></description>
			<author><![CDATA[null@example.com (maciek)]]></author>
			<pubDate>Tue, 17 Feb 2009 14:17:11 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/189/#p189</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/185/#p185</link>
			<description><![CDATA[<p>alez ja od samego poczatku uwazam iz jezeli robi sie wszystko we framewokru jakim jest cake , trzeba korzystac najwiecej jak to mozliwe z jego dobrodziejstw, trzymac sie zasady MVC, dobrze zaplanowac strukture, baze, kontrolery, widoki, modele, elementy..itd..itd.<br />Oczywiscie uzywajac takich metod (jak np. $this-&gt;query() ..z czego trzeba korzystac jak najmniej) mozna byloby w pewnym momencie dojsc do wniosku, paradoksalnie, iz caly serwis upchnac do jednego pliku, jakim jest np. bootstrap.php <img src="http://forum.cakephp.org.pl/img/smilies/smile.png" width="15" height="15" alt="smile" /> co nie jest cakefriendly <img src="http://forum.cakephp.org.pl/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />Osobiscie nie preferuje takich metod, ale jezeli na pewnym etapie realizacji serwisow, szczegolnie jezeli robi sie to po kims, lub jezeli serwis jest dosc duzy, a nie ma czasu na przebudowe, niestety trzeba uciec wlasnie do takich rozwiazan jak np. $this-&gt;query...<br />no..ale to debata na dlugie rozmowy na temat MVC oraz cakefriendly.<br />pozdrawiam serdecznie</p>]]></description>
			<author><![CDATA[null@example.com (juby)]]></author>
			<pubDate>Tue, 17 Feb 2009 12:20:45 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/185/#p185</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/184/#p184</link>
			<description><![CDATA[<p>@juby no tak - to jest niby najprostrza metoda zastanawialem sie tylko czy jest cos jeszcze bardziej cake Friendly ;] </p><p>Teraz sie tak zastanawiam czy faktycznie jest sens dodawac jakis model (loadModel) czy tez inna metode tylko poto aby wywolac jedno glupie zapytanie ze slownika. Moze i nie - chyba chcialem zabic komara z armaty ;]</p><p>Dzieki za odpowiedzi wychodzi na to ze nieraz najprostsze metody sa najlepsze heheh ;] </p><p>PS: @maciek - bindModel odpada gdyz slowniki nie maja powiazań z tabelami <img src="http://forum.cakephp.org.pl/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>PS2: Dzieki za odpowiedzi, nara ;]</p>]]></description>
			<author><![CDATA[null@example.com (duke_piotr)]]></author>
			<pubDate>Tue, 17 Feb 2009 09:40:54 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/184/#p184</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/183/#p183</link>
			<description><![CDATA[<p>sposob z ClassRegistry::init...nie jest za bardzo optymalny moim zdaniem. Wywylujac ta funcje nie dosc ze dolaczasz dodatkowe 73 linijki kodu (tyle zajmuje init <a href="http://api.cakephp.org/view_source/class-registry/#line-98">http://api.cakephp.org/view_source/clas … y/#line-98</a>) to jeszcze w dodatku zasmiecasz pamiec niepotrzebnym obiektem.<br />Moim zdaniem najlepszym rozwiazaniem (jezeli nie chcesz dodawac modelu w zmiennej $uses) jest napisanie funkcji prywatnej (z przedrostkiem &#039;_&#039;, aby nie mozna bylo jej wywolac z poziomu przegladarki) w modelu aktualnym np w pliku models/NazwaModelu.php stworzyc funkcje taka :<br /></p><div class="codebox"><pre><code>class NazwaModelu extends AppModel {
   
   ....
   ....
   ....
   function _getSlownik() {
     $data = $this-&gt;query(&#039;.....zapytanie do tabeli &#039;slowniki&#039;&#039;);
     return $data;
  }
}</code></pre></div><p>a w danym miejscu kontrollera wywolujesz ja w znany wszystkim sposob<br /></p><div class="codebox"><pre><code>//controller
$data = $this-&gt;NazwaModelu-&gt;_getSlowniki();</code></pre></div><p>mam nadzieje ze sposob bedzie dla Twoich potrzeb optymalny</p>]]></description>
			<author><![CDATA[null@example.com (juby)]]></author>
			<pubDate>Tue, 17 Feb 2009 00:23:52 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/183/#p183</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/182/#p182</link>
			<description><![CDATA[<p>Albo $this-&gt;NazwaModelu-&gt;bindModel( array( parametry&nbsp; ) ); i potem $this-&gt;NazwaModelu-&gt;NowyModel-&gt;metoda();<br />Albo bardziej przyjemne rozwiązanie - ClassRegistry::init(&#039;NowyModel&#039;)-&gt;metoda();</p>]]></description>
			<author><![CDATA[null@example.com (maciek)]]></author>
			<pubDate>Mon, 16 Feb 2009 13:07:40 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/182/#p182</guid>
		</item>
		<item>
			<title><![CDATA[Odp: FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/179/#p179</link>
			<description><![CDATA[<p>Możesz w akcji użyć <a href="http://api.cakephp.org/class/controller#method-ControllerloadModel">loadModel</a></p>]]></description>
			<author><![CDATA[null@example.com (nookie)]]></author>
			<pubDate>Mon, 16 Feb 2009 01:56:12 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/179/#p179</guid>
		</item>
		<item>
			<title><![CDATA[FindAll - oddzielna tabela]]></title>
			<link>http://forum.cakephp.org.pl/post/170/#p170</link>
			<description><![CDATA[<p>Hej mam pytanko:<br />Jaki jest najlepszy/najprostrzy sposob na zapytanie findAll z innej, niepowiazanej w zaden sposob tabeli (np. slownik).</p><p>Obecnie moj kontroler jest dosyc mocno rozbudwany i chcialbym dolaczyc do jednej z podstron liste rozwijana ktorej wartosci beda pobierane z innej tabelki.</p><p>Czy jedyny sposob to $uses = array() ? Troche to kiszkowate bo dodawal bym ten model do kazdej uprzednio stworzonej podstrony a chcialbym tylko do jednej.</p><p>Dzieki</p>]]></description>
			<author><![CDATA[null@example.com (duke_piotr)]]></author>
			<pubDate>Wed, 11 Feb 2009 15:28:58 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/170/#p170</guid>
		</item>
	</channel>
</rss>

