<?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>WIDGET-INFO &#187; データベース</title>
	<atom:link href="http://blog.widget-info.net/tag/detabase/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:44:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CakePHP 1.3.0-betaリリース</title>
		<link>http://blog.widget-info.net/2010/01/cakephp-1-3-0-beta/</link>
		<comments>http://blog.widget-info.net/2010/01/cakephp-1-3-0-beta/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 14:05:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Version]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=407</guid>
		<description><![CDATA[CakePHP 1.3.0-betaがリリースされています。「alpha」のリリースから2ヶ月ほどですが、だいぶ機能追加もあったようです。]]></description>
			<content:encoded><![CDATA[<p>CakePHP 1.3.0-betaがリリースされています。<br />
「alpha」のリリースから2ヶ月ほどですが、だいぶ機能追加もあったようです。</p>
<p>現在開発でも使っている「1.2.5」のバージョンでも十分開発が可能ですが<br />
「1.3」系はそれを上回るほど、個人的には期待しています（笑<br />
<span id="more-407"></span><br />
というのも「1.2」系では2つのアプリケーションをCakePHPの設計上1つにまとめることができず<br />
2つの「app」を用意しなければならない状態など、若干の不自由さがありました。<br />
もちろん何でも無理やり1つにすれば良いということはありませんが（笑</p>
<p>捉え方は個人差がありますが、個人的には今回の「1.3」系に早く乗り換えたいと考えています。</p>
<p>ちなみに個人的には以下の機能が「1.3」系で魅力的に見えています（笑</p>
<p>1.「virtual fields」機能<br />
ようやく来たか、という感じです（笑<br />
簡単に説明すると通常は1つテーブル内にあるフィールドはCakePHPで普通に取得すると<br />
存在するフィールドのみデータが取得されます。<br />
しかしデータベース（ここではMySQLで例えます）では、存在するフィールドAとBをくっつけてCの仮想のフィールドに<br />
加工してデータを取得することができます。<br />
今までのCakePHPでは独自にクエリーを記述して取得するしか方法はありませんでしたが、今回のCakePHPでは<br />
モデルに記述することでクエリーを書くことなく実現できるとのこと。<br />
さらにコーディング量が減るのではと期待しています。</p>
<p>2.「Routing.admin」の仕様変更<br />
今までの仕様では「Routing」の設定は1つまででした。<br />
いわゆる「Routing」が「admin」と設定していた場合は「index」と「admin_index」のみとなっています。<br />
さらに別名が必要な場合は「app」自体を分けるか、「Webサービス」機能を使うか（個人的にはまったく利用していません。。。）<br />
になるかと思います。<br />
しかし「1.3」系からは複数設定することが可能です。この変更はかなり大きいです（笑</p>
<p>3.Componentsの仕様変更<br />
といっても大幅な変更ではないようですが、使い勝手が向上した変更のようです。<br />
コンポーネントを作成したことがあるかたはご存知かと思いますが、現在のコンポーネントでは<br />
モデルのビヘイビアのように、初期設定値をコンポーネント設定時には記述することができません。<br />
しかし「1.3」系からは記述することが可能になります。<br />
これは個人的ちょっとほしかった機能で、コンポーネントの開発の幅が広くなりそうです（笑</p>
<p>と特に魅力的に思えた部分ですが、その他にも「Valdation」などなどで機能が大幅に改善されています。<br />
ここでは全てを書ききれないので、また別の機会に紹介できればと（汗</p>
<p>最後に、「1.2」系のアプリケーションに「1.3」系のCakePHPに変更すると、とりあえずエラーが起きます（笑<br />
まぁ当たり前な話ではありますが、特にクラス名が変更されている部分もあるそうなので、<br />
変更を予定されている方は注意が必要かと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2010/01/cakephp-1-3-0-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP　テーブル情報の削除</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 23:21:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cache]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[その他クラス]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=318</guid>
		<description><![CDATA[CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。]]></description>
			<content:encoded><![CDATA[<p>CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。<br />
「app/config/core.php」内の設定で「Configure::write(&#8216;Cache.check&#8217;, true);」を<br />
適用していると生成されませんが、「app/tmp/cache/models」に<br />
データベースのテーブル情報がキャッシュとして保存されていきます。<br />
<span id="more-318"></span></p>
<p>これはテーブル情報をキャッシュすることで、フォームヘルパーなどでも利用される情報でもあり<br />
大変便利な機能ではあります。<br />
しかし気をつける点があり、「app/config/core.php」内の設定で「Configure::write(&#8216;debug&#8217;, 0);」の設定を<br />
1以上であれば、テーブルの情報を変更しても問題は無いのですが<br />
0を指定(デバック無し)にしてテーブル情報を変更すると、変更したテーブルのフィールド情報が取得されない現象が起こります。<br />
詳しい内容は割愛させていただきますが、まぁあたりまえな話でもあります。</p>
<p>しかし、ここで問題となるのが作成するアプリケーションの機能で、任意のタイミングにテーブル情報を変更するような<br />
動的テーブルが存在するアプリケーション設計に問題が発生するかと思います。<br />
その場合、キャッシュとして保存されたテーブル情報を一度削除をしなければ、変更された状態のテーブル情報を<br />
取得することができなくなり、「find()」などでも問題となってしまいます。</p>
<p>そこで削除する方法を探してみました。<br />
単純にCakePHPには定数の「CACHE」であるキャッシュディレクトリへのパスがあるので<br />
その定数を使って削除する方法がありますが、無駄なコーディングが増えるので<br />
CakePHPの内部を調べてテストしてみたところ発見！1行のコーディングで削除できます。</p>
<p>削除するためのコーディングはこちら</p>
<pre class="brush:php">Cache::delete('ファイル名','_cake_model_')</pre>
<p>ここで注意することは指定する「ファイル名」です。<br />
この名称の指定はキャッシュ機能が「File」エンジンを利用して、設定を変更していない場合は<br />
ファイル名のプレフィックスとして「cake_model_」が自動でつきます。<br />
「ファイル名」の指定は、例えばデータベースへの接続が「default」でテーブル名が「users」の場合は<br />
「ファイル名」を「default_users」となります。</p>
<p>これでテーブルが動的な設定でもCakePHPを問題なく利用できかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　paginateの基本</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_paginate/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_paginate/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:02:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Helpers]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[paginate]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=196</guid>
		<description><![CDATA[CakePHPでは「paginate」（ページング機能）が最初から搭載されています。1.1系では別に用意する必要があったページングが、1.2系では最初から搭載されているのでわざわざコーディングすることなく利用できる]]></description>
			<content:encoded><![CDATA[<p>CakePHPでは「paginate」（ページング機能）が最初から搭載されています。<br />
1.1系では別に用意する必要があったページングが、1.2系では最初から搭載されているので<br />
わざわざコーディングすることなく利用できるのは開発の効率がよくなるものです（笑</p>
<p>さてこの「paginate」（ページング機能）を少し解説していこうかと思います。<br />
といっても自分のメモ的なものもありますが。。。<br />
<span id="more-196"></span><br />
「paginate」（ページング機能）を利用する前に、CakePHPでまず必要な用意はありません（笑<br />
前述したとおり1.2系では最初から利用できるので特別な用意をする必要がありません。<br />
なぜ用意が必要がないかと言うと、必要なものはCakePHP側で先に用意してくれているからです。<br />
例えば、「paginate」（ページング機能）を使うには通常はヘルパーの「Paginator」、ajax化を利用するなら<br />
「ajax」ヘルパーが必要になりますが、CakePHPが各ヘルパーが無いと判断したら、自動で利用できるようになっています。<br />
これは楽です（笑<br />
ではデータベースから取得するにはコントローラーでどう記述するかとなると、<br />
まずは基本は次のようになります。</p>
<pre class="brush:php">$this-&gt;paginate();</pre>
<p>すごく簡単な説明でした（笑<br />
では条件を指定する場合、</p>
<pre class="brush:php">$this-&gt;paginate($conditions);</pre>
<p>またまた簡単です（笑<br />
ここで躓きそうな悩み。。。<br />
モデルを指定していないのに、なぜデータが取得できるか。<br />
それは「paginate」が自動でモデルを内部で処理をし、データベースからデータを取得する<br />
モデルを自動で設定してくれています。<br />
ここでさらに疑問となるのが「Aコントローラー」の「Aモデル」の「paginate」ではなく<br />
「Aコントローラー」から「Bモデル」の「paginate」のデータを取得する場合はどうするのか。</p>
<p>さすがにCakePHPは自動とはいきません（笑<br />
そこで取得するデータのモデルを指定する場合は次のようになります。</p>
<pre class="brush:php">$this-&gt;paginate('取得するモデル名');</pre>
<p>ここで「？」と思う方、はい先ほどの説明でモデルを指定する第1引数には<br />
条件指定を入れている場所でした。<br />
実はCakePHPでは第1引数が文字列の場合は、それをモデル名として処理します。<br />
では条件はどこに記述するのかですが、この場合は第2引数が条件指定の渡しとなります。</p>
<pre class="brush:php">$this-&gt;paginate('取得するモデル名',$conditions);</pre>
<p>これでモデルを指定したり、条件を指定したり自由に「paginate」（ページング機能）を使いこなせると思います。<br />
ちなみに「$conditions」の指定方法は「find」と同じです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_paginate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP　「tbtransform」の公開</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_tbtransform_open/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_tbtransform_open/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 15:16:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=180</guid>
		<description><![CDATA[CakePHPのビヘイビアで利用できる「tbtransform」を公開します。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのビヘイビアで利用できる「tbtransform」を公開します。</p>
<p>このビヘイビアでは日本語入力を統一させるために<br />
英数字とスペースを対象に半角または全角に自動で変換するためのビヘイビアです。<br />
簡単な作りでもありますので、ビヘイビアの開発の参考になれば幸いです。</p>
<p>公開ページは<a title="tbtransformビヘイビア" href="http://blog.widget-info.net/tbtransform_behavior/">こちら</a>です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_tbtransform_open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP　DBからTree（ツリー）構造でSELECT</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_select_tree/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_select_tree/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 14:21:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=167</guid>
		<description><![CDATA[CskePHPではDBに保存されているデータをツリー構造で取得することが可能です。]]></description>
			<content:encoded><![CDATA[<p>メモとして。。。</p>
<p>CskePHPではDBに保存されているデータをツリー構造で取得することが可能です。<br />
PHPコードを普通に記述するのは面倒な作業なのに、CakePHPでは基本1行で済んでしまいます（笑）</p>
<p>さて実際の記述は。。。<br />
<span id="more-167"></span></p>
<pre class="brush:php">
$this-&gt;モデル名-&gt;find('threaded');
</pre>
<p>たったこれだけです。簡単ですね（笑<br />
ちなみにデータベース上にはどのデータが親なのかを「parent_id」で紐付けしておく必要があります。</p>
<p>上記のコードで？と思う方、お気づきでしょうか？<br />
はい、通常の「find」の利用では「threaded」の部分には条件指定の配列を入れます。<br />
このコードでは条件指定はできず、動作してくれませんorz</p>
<p>この問題を解消するには。。。<br />
って複雑ではありませんし、実はCakePHPではちゃんと用意されています（汗</p>
<p>通常「find」の第2引数は「field」を指定するのですが、この指定を工夫します。<br />
例えば条件を指定する場合は次のような形です。</p>
<pre class="brush:php">
$field['conditions']['AND']～
</pre>
<p>この「conditions」がCakePHPでは自動で、第1引数に置き換えてくれます。<br />
これで条件指定があるTree（ツリー）構造も簡単にできますね（笑</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_select_tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
