<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>WIDGET-INFO &#187; Model</title>
	<atom:link href="http://blog.widget-info.net/tag/model/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Sat, 24 Dec 2011 20:47:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/tag/model/feed/" />
		<item>
		<title>CakePHP　バリデーションの日本語問題</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_validation_jpn/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_validation_jpn/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 22:57:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[バリデーション]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=304</guid>
		<description><![CDATA[CakePHPにはバリデーションの機能があります。入力データを任意の方法で正しい入力かどうかをチェックしてくれる機能。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPにはバリデーションの機能があります。<br />
入力データを任意の方法で正しい入力かどうかをチェックしてくれる機能。。。<br />
大変便利機能で当たり前のように使っていると思いますが、やはり日本語周りがorz</p>
<p>まぁしかたの無いことなのですが、内部のライブラリの状態を見る限りでは<br />
悲しいこと2バイト文字に関しては基本処理されていません。<br />
<span id="more-304"></span></p>
<p>例えば「minLength」というバリデーション方法。<br />
入力文字数の最小数をチェックしてくれるバリデーションですが、<br />
CakePHPの本体のままで利用して例として、最小文字数を2文字以上で<br />
入力させたい場合で入力文字が「あ」と入力されたとします。</p>
<p>普通に考えればバリデーションに引っかかり、入力エラー処理をされますが、<br />
もちろんあっさり通り抜けてしまいます（笑<br />
まぁ内部を見ると簡単。。。2バイト文字は無視です（笑<br />
※厳密には無視では無く、文字数の数え方が違います。</p>
<p>そこでCakePHPの本体を変更せずに、2バイト文字に対応させた<br />
バリデーション方法はないか。。。もちろんバリデーション名も変更せずに。。。</p>
<p>その結果、「app_model.php」に以下の方法で対応できます。</p>
<pre class="brush:php">function minLength($check, $min) {
	$check=(is_array($check))?current($check):$check;
	$length = mb_strlen($check,Configure::read('App.encoding'));
	return ($length &gt;= $min);
}</pre>
<p>既存のバリデーションにオーバロードをさせてしまう方法です。<br />
こうすることで2バイト文字でも正しく文字数を判別することができるようになります。<br />
その他のバリデーションも同じように変更することで2バイト文字のバリデーション対応にすることができます。<br />
といってもあと2つなのでコピペができるようにまとめておきます。</p>
<pre class="brush:php">function minLength($check, $min) {
	$check=(is_array($check))?current($check):$check;
	$length = mb_strlen($check,Configure::read('App.encoding'));
	return ($length &gt;= $min);
}
function maxLength($check, $max) {
	$check=(is_array($check))?current($check):$check;
	$length = mb_strlen($check,Configure::read('App.encoding'));
	return ($length &lt;= $max);
}
function between($check, $min, $max) {
	$check=(is_array($check))?current($check):$check;
	$length = mb_strlen($check,Configure::read('App.encoding'));
	return ($length &gt;= $min &amp;&amp; $length &lt;= $max);
}</pre>
<p>2バイト文字の処理がある場合は注意しておくと無難です（笑
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F10%2Fcakephp_validation_jpn%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_validation_jpn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/10/cakephp_validation_jpn/" />
	</item>
		<item>
		<title>CakePHP　Behaviorのsetup()注意点</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 03:59:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=299</guid>
		<description><![CDATA[CakePHPのビヘイビアでの注意点がひとつありましたのでメモとして。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのビヘイビアでの注意点がひとつありましたのでメモとして。。。</p>
<p>ビヘイビアの「setup()」を利用する際に注意点がありました。<br />
特に気づかずに第2引数を変数などにセットすると、コントローラー内に<br />
2つ以上モデルが存在し、両方に同じビヘイビアを設定した場合、<br />
その設定が上書きされてしまう恐れがあります。</p>
<p>といってもイマイチな説明ですが（汗<br />
<span id="more-299"></span><br />
CakePHPの1.1から利用して同じ使い方（同じコード）で利用していたということと<br />
その現象になる設計が無かったのが幸いして、発見に至りました（笑</p>
<p>通常は1つのコントローラーに1つのモデルとしてコーディングしていきますが、<br />
設計によっては1つのコントローラーが2つのモデルを利用する場合もあるかと思います。<br />
モデル1対コントローラー1の関係で利用するビヘイビアの設計であればいいのですが<br />
ビヘイビアはモデル多対コントローラー1の考えが基本かと思います。<br />
その例としてコントローラーでは以下の使い方があると思います。</p>
<pre class="brush:php">//コントローラー内のモデル設定で
$uses=array('モデル1','モデル2');</pre>
<p>この場合、それぞれのモデルに1つのビヘイビアをセットしたとし、<br />
「setup()」の第2引数にも何かしらの設定をセットしたとします。<br />
ビヘイビアでは以下のような処理とすると</p>
<pre class="brush:php">function setup(&amp;$model, $config = array()) {
	$this-&gt;config = $config;
}</pre>
<p>ここで問題発生。。。<br />
この場合「モデル1」のビヘイビアの処理を実行しているのに、通常はモデル1に設定されている<br />
ビヘイビアの第2引数が利用されるのに、実際はモデル2の第2引数を利用しようとします。</p>
<p>どうやらCakePHP1.2の途中からビヘイビアの読み込み方が、若干変更されていたみたいですorz</p>
<p>そこで内部を調べた結果の対応策として以下の方法で対処が可能ということが判明しました。</p>
<pre class="brush:php">function setup(&amp;$model, $config = array()) {
	$this-&gt;config[$model-&gt;alias] = $config;
}</pre>
<p>こうするこで、問題なく実行しているモデルの第2引数を参照するようにすることが可能です。<br />
まぁ単純にモデル名で配列化しているというだけにはなります（笑
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F10%2Fcakephp_behavior_setup%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/10/cakephp_behavior_setup/" />
	</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>です。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_tbtransform_open%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_tbtransform_open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_tbtransform_open/" />
	</item>
		<item>
		<title>CakePHP　モデルのインポート方法</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_model_import/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_model_import/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:05:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[import]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=175</guid>
		<description><![CDATA[CakePHPのモデルでアソシエーションしていないモデル、またはアソシエーションが無い他のモデルを使うこともあるかと思います。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのモデルでアソシエーションしていないモデル、<br />
またはアソシエーションが無い他のモデルを使うこともあるかと思います。</p>
<p>アソシエーションをしていれば問題なく使えますが、アソシエーションをしていないモデルや<br />
アソシエーションが無いモデルは、別の方法でモデルを読み込みます。<br />
例えば最初から利用するのであれば、コントローラー内の</p>
<pre class="brush:php">var $uses=array();</pre>
<p>に記述しますが、特定の段階でとなるとこれでは対応できません。<br />
その場合は特定の段階で<br />
<span id="more-175"></span></p>
<pre class="brush:php">App::import('Model','モデル名');</pre>
<p>と記述後</p>
<pre class="brush:php">$this-&gt;モデル名=new モデル名();</pre>
<p>となります。これで使いたいタイミングでモデルを読み込み、そのモデルを<br />
有効に利用することができます。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_model_import%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_model_import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_model_import/" />
	</item>
		<item>
		<title>CakePHP　「find」の種類</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_find_type/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_find_type/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 15:07:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[find]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=171</guid>
		<description><![CDATA[CakePHPでよく使われる「find」。「find」の種類をサクっと紹介します。]]></description>
			<content:encoded><![CDATA[<p>CakePHPでよく使われる「find」。<br />
大変便利でCakePHPでは一般的に使われるデータベースから<br />
データの取得やなにやらまで基本的なものを用意してくれています。</p>
<p>さてその「find」の種類をサクっと紹介します。<br />
<span id="more-171"></span></p>
<p>まず基本。。。<br />
これもよく使う「findAll」。実は「find」で記述することができます。<br />
いまさら実はということでもないですが（笑</p>
<p>記述例は</p>
<pre class="brush:php">$this-&gt;モデル名-&gt;find('all');</pre>
<p>だけです。まぁCakePHP本体を追うとすぐに発見できます。</p>
<p>「all」の指定以外に次のものがあります。</p>
<p>・first<br />
データベースから1件だけデータを取得<br />
よく使う形で置き換えると「read()」<br />
・count<br />
データベースにあるレコード数を取得<br />
よく使う形で置き換えると「findCount()」<br />
・neighbors<br />
指定したレコードの前後のレコードを取得<br />
・list<br />
データベースから「primaryKey」を配列のキー、「displayField」を配列の値の形で<br />
データを取得します。<br />
・threaded<br />
Tree（ツリー）構造でデータベースからレコードを取得</p>
<p>CakePHPで用意されている「find」は以上です。<br />
十分用意されていて至れり尽くせりな感じです（笑）
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_find_type%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_find_type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_find_type/" />
	</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（ツリー）構造も簡単にできますね（笑
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_select_tree%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_select_tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_select_tree/" />
	</item>
		<item>
		<title>CakePHP　setSource()の注意点</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_setsource_info/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_setsource_info/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 13:10:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=110</guid>
		<description><![CDATA[モデルが参照するデータベースのテーブルを途中で変更するということで「setSource()」を以前に説明しました]]></description>
			<content:encoded><![CDATA[<p>モデルが参照するデータベースのテーブルを途中で変更する<br />
ということで「setSource()」を以前に説明しましたが、注意点を発見。。。</p>
<p>自分のメモとして記録します（汗<br />
<span id="more-110"></span>恐らくデータベースの設計が複雑だったり、負荷分散的（？）につかわないかぎり<br />
あまり利用されない方法かとは思いますが。。。</p>
<p>さて注意点ですが、コントローラーの途中で「setSource()」を使うことで<br />
参照テーブルを変更できますが、コントローラーの途中で新たなテーブルを作成して<br />
そのテーブルを「setSource()」でセットするとどうなるでしょうか。。。</p>
<p>はい、実はテーブルがありませんとエラーが出ます。<br />
これはCakePHPが接続しているデータベースのテーブル情報を<br />
キャッシュし、そのキャッシュ内に変更するテーブルがあれば変更できるような仕様でした（泣</p>
<p>まぁあたり前といえば当たり前。</p>
<p>そこで下記のようにすることで回避ができたのでご参考に（笑</p>
<pre class="brush:php">$db = ConnectionManager::getDataSource($this-&gt;useDbConfig);
$dbconf = new DATABASE_CONFIG();
$dbbArray = array(
'database'=&gt;$dbconf-&gt;{$this-&gt;useDbConfig}['database'],
'host'=&gt;$dbconf-&gt;{$this-&gt;useDbConfig}['host']
);
$db-&gt;reconnect($dbbArray);
$this-&gt;setSource('テーブル名');</pre>
<p>この例は再度データベースを指定して、キャッシュを取得しなおしています。<br />
こうすることで問題は解決です。</p>
<p>時間足らずなので、とりあえずこれで対応ですが<br />
キャッシュを再取得があるような。。。<br />
まぁ調べてみます（汗
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_setsource_info%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_setsource_info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_setsource_info/" />
	</item>
		<item>
		<title>CakePHP　データベースのテーブル名を途中で変更</title>
		<link>http://blog.widget-info.net/2009/08/cakephp-usetable_change/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp-usetable_change/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 15:04:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=85</guid>
		<description><![CDATA[CakePHPのデータベースのテーブル名を途中で変更]]></description>
			<content:encoded><![CDATA[<p>CakePHPではデータベースの接続先テーブルを変更できますが<br />
実行中に変更したくなる場合があると思います。</p>
<p>コントローラーの実行途中で接続先のテーブルを変更する、<br />
そんな開発なのでメモとして（笑）</p>
<p><span id="more-85"></span>接続先のテーブルを変更する可能性はいろいろなパターンがあります。<br />
例えば、ログインユーザーごとのテーブルが存在する場合や<br />
CakePHPの「plugin」機能を利用をした場合など、仕様によってさまざまです。<br />
※「plugin」については、いつか説明ができればと（汗）</p>
<p>さて本題ですが接続先のテーブルを変更する場合は次のように記述します。</p>
<pre class="brush:php">$this-&gt;モデル名-&gt;setSource('接続先テーブル名');</pre>
<p>記述はコントローラー内で行いますので注意してください。</p>
<p>これで任意のタイミングでテーブルの接続を動的に変更できます。<br />
ここまで考えられているCakePHPは便利だなと、つい思ってしまいます（笑）
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp-usetable_change%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp-usetable_change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp-usetable_change/" />
	</item>
		<item>
		<title>CakePHP　データベースのテーブル名を変更</title>
		<link>http://blog.widget-info.net/2009/08/cakephp-usetable_set/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp-usetable_set/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 15:25:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=83</guid>
		<description><![CDATA[CakePHPのデータベースのテーブル名を変更]]></description>
			<content:encoded><![CDATA[<p>CakePHPではモデルが接続するデータベースのテーブルは<br />
モデル名をCakePHPの命名規則にそって自動で接続されます。<br />
たとえばモデル名が「usr」の場合はデータベースのテーブル名は「usrs」となります。</p>
<p>しかしモデル名はそのままで接続するデータベースのテーブル名を<br />
変更したいと思う方もいるはずです。。。そう思わせてください（笑）</p>
<p><span id="more-83"></span><br />
ではその場合はどうするのかですが、モデルの初期設定を変更します。<br />
独自のテーブル名を指定したいモデル内に次のように記述してあげます。</p>
<pre class="brush:php">var $useTable = 'テーブル名';</pre>
<p>記述することでテーブル名を変更することが可能です。<br />
また変更することでBake時も自動で認識してもらえます。</p>
<p>簡単な記述でコーディングができることはいいですね（笑）<br />
まぁCakePHPで開発していると、基本がおろそかになりそうで怖いですが（汗）
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp-usetable_set%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp-usetable_set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp-usetable_set/" />
	</item>
		<item>
		<title>CakePHP　ビヘイビア(behavior)の実行時期</title>
		<link>http://blog.widget-info.net/2009/08/cakephp_behavior_load/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp_behavior_load/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 03:37:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=43</guid>
		<description><![CDATA[CakePHPのビヘイビア(behavior)の実行時期について]]></description>
			<content:encoded><![CDATA[<p>ビヘイビアの実行は基本、モデルが特定のタイミングで実行されます。<br />
自動で実行してくれることは大変便利で無駄なコーディングをしなくてすむ利点があります。</p>
<p>しかし任意のタイミングで実行してほしい場合もあります。<br />
そんな場合はビヘイビアを途中でつけたり外したりすることがCakePHPでは可能にできてます。<br />
<span id="more-43"></span><br />
ビヘイビアを途中でつけたり外したりする場合はコントローラー側にコーディングしていきます。<br />
<a title="エンコードビヘイビアv1.2" href="http://blog.widget-info.net/2009/08/cakephp_enc_behavior_update/" target="_self">前回</a>のエンコードビヘイビアを例に記述すると<br />
ビヘイビアをつける場合は<br />
$this-&gt;モデル名-&gt;Behaviors-&gt;attach(&#8216;Encoding&#8217;,array(&#8216;to&#8217;=&gt;&#8217;EUC-JP&#8217;,'save&#8217;=&gt;&#8217;utf8&#8242;));<br />
と記述することで任意のタイミングでビヘイビアを取り付けることが可能です。</p>
<p>またビヘイビアを外す場合は<br />
$this-&gt;モデル名-&gt;Behaviors-&gt;detach(&#8216;Encoding&#8217;);<br />
と記述することで任意のタイミングで取り外すことができます。</p>
<p>エンコードビヘイビアではこの指定方法はあまりメリットはありませんが<br />
独自のビヘイビアを考える際はこの方法もあることを念頭にビヘイビアを設計すると<br />
ビヘイビアの利便性が向上するかもしれません。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp_behavior_load%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp_behavior_load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp_behavior_load/" />
	</item>
	</channel>
</rss>

