<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code@HexFlux &#187; beforefind</title>
	<atom:link href="http://code.hexflux.com/tag/beforefind/feed/" rel="self" type="application/rss+xml" />
	<link>http://code.hexflux.com</link>
	<description>yet another web application developer using cakephp &#124;&#124; django</description>
	<lastBuildDate>Thu, 01 Apr 2010 10:43:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>menggunakan cakephp&#8217;s beforeFind</title>
		<link>http://code.hexflux.com/2008/09/menggunakan-cakephps-beforefind/</link>
		<comments>http://code.hexflux.com/2008/09/menggunakan-cakephps-beforefind/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 03:33:08 +0000</pubDate>
		<dc:creator>Hizam Mohd</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[beforefind]]></category>
		<category><![CDATA[callback]]></category>

		<guid isPermaLink="false">http://code.hexflux.com/?p=39</guid>
		<description><![CDATA[I found out that on cakephp 1.2 RC3 you must use the new $Model->find() style or the query will break. 1 2 3 4 5 6 7 8 9 10 11 //in the controller use this... $this-&#62;Post-&#62;find&#40;'first', $params&#41;; &#160; //instead of the 'old' style... $this-&#62;Post-&#62;find&#40;$conditions&#41;; &#160; //so that in the model, you can do something [...]]]></description>
			<content:encoded><![CDATA[<p><i>I found out that on cakephp 1.2 RC3 you must use the new $Model->find() style or the query will break.</i> </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//in the controller use this...</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'first'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//instead of the 'old' style...</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//so that in the model, you can do something like this...</span>
<span style="color: #000000; font-weight: bold;">function</span> beforeFind<span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$queryData</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'conditions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;`Post`.`post_type`&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;personal&quot;</span><span style="color: #339933;">;</span>
          <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</p>
<p>Ada masanya kita perlu mengubah condition carian-carian kita pada satu-satu model. Selain meletakkan condition query itu setiap kali kita melakukan find, kita boleh menggunakan function callback pada model iaitu function beforeFind(). Ia menerima satu parameter iaitu $queryData, variable array yang menyimpan maklumat untuk find seperti &#8216;conditions&#8217;, &#8216;limit&#8217;, &#8216;joins&#8217; dan sebagainya.</p>
<p><del>Tidak</del> seperti tertera pada dokumentasi cakePHP, sebenarnya untuk beforeFind  kita dapat memulangkan samada boolean (true/false) ataupun satu array . Jika kita memulangkan boolean, ia samada menjalankan query tersebut atau tidak: true untuk teruskan query, false untuk tidak membuat query.</p>
<p>Apa yang <del>tidak</del> disebut ialah jika kita mahu menukarkan apa2 pada syarat query itu, kita perlu buat perubahan pada $queryData dan pulangkan $queryData itu (return ($queryData)). Contoh&#8230;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
* ini contoh untuk menambahkan syarat pada find kita. Ini pada model AccomodationTravelBooking
**/</span>
<span style="color: #000000; font-weight: bold;">function</span> beforeFind<span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     <span style="color: #000088;">$queryData</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'conditions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;`AccomodationTravelBooking.booking_type` = 'accomodation'&quot;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Contoh diberi pada dokumentasi cakephp ialah jika kita tidak membenarkan query dilakukan mengikut syarat2 tertentu:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
* ini contoh untuk menambahkan syarat pada find kita. Ini pada model AccomodationTravelBooking
**/</span>
<span style="color: #000000; font-weight: bold;">function</span> beforeFind<span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//kononnya id 44 tu satu ID yang kita tak benarkan untuk diquery</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$queryData</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'conditions'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'AccomodationTravelBooking.id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">44</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>nota update: tak baca betul2, camtu la resultnya.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.hexflux.com/2008/09/menggunakan-cakephps-beforefind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
