ちょっと意外?Cakephpは同一のテーブルでbindできる
Cakephpは同一のテーブルでbindできる
まさか~と思って試したところ、出来てしまいました。
一つのテーブルに、親子関係があるようなデータ構造があったとします。
例えば都道府県と市区町村を一つのテーブルで管理するareaテーブルがあったとします。
areaテーブルの例
下記の場合だと、都道府県が親、市区町村が子の関係になり、都道府県は親を持たないデータ、市区町村はそれぞれの都道府県を親に持つデータ構造になります。
この場合、子を複数持つ、hasManyの形で『たった一つのテーブルでbind』したいのです。
areaテーブルのデータの例
| id | name | parent_id |
| 1 | 東京 | 0 |
| 2 | 埼玉 | 0 |
| 3 | 千葉 | 0 |
| 4 | 神奈川 | 0 |
| 5 | 栃木 | 0 |
| 6 | 新宿 | 1 |
| 7 | さいたま市 | 2 |
| 8 | 浦安 | 3 |
| 9 | 横浜 | 4 |
| 10 | 宇都宮 | 5 |
Cakephp hasManyでbind
親(都道府県)が、子(市区町村)をたくさん持つのですから、この場合hasManyですね。
array(
‘hasMany‘=>array(
‘Area‘=>array(
‘className’=>’Area‘,
‘conditions’=>”,
‘order’=>”,
‘foreignKey’=>’parent_id’,
)
)
),false);
hasMany bindの実行結果
実行結果は以下のようになり、単一のテーブルでも何ら問題ないhasManyで結果が返ってきます。
Array
(
[0] => Array
(
[Area] => Array
(
[id] => 1
[name] => 東京
[parent_id] => 0
[0] => Array
(
[id] => 6
[name] => 新宿
[parent_id] => 1
)
)
)
[1] => Array
(
[Area] => Array
(
[id] => 2
[name] => 埼玉
[parent_id] => 0
[0] => Array
(
[id] => 7
[name] => さいたま市
[parent_id] => 2
)
)
)
)
単一のテーブルでhasManyのSQL
bindは単一のテーブルでも可能なことは分かりました。
最後にどのようなSQLが発行されていたか確認しました。
なるほど、INですか。
AndroidSDKアップデートエラーとその対策
Android SDKがあればAndroidの端末が無くても、気軽にAndroidが体験できますね。
Androidのアプリ開発にとインストールしたものですが、普通にスマートフォン制作をするにあたっても、
Androidのバージョン別にブラウザの確認が出来ます。
Androidも2.1と2.2ではCSS3の使えるプロパティが大幅に変わっているので、Android版の『IE Tester』として、WEBデザイナーの方も気軽に使っていただきたいです。
AndroidSDKインストール手順
AndroidSDKのインストール手順はこちらを参考にして下さい。初心者向けで分かりやすいです。
(先にJAVAをインストールしておく必要があります。)
で、今回はAndroid SDKのアップデートエラーに関する解決方法を紹介します。
AndroidSDKアップデートエラーA folder failed to be moved・・・
AndroidSDKアップデートをアップデートしようとすると、何やらエラーが発動し、うまくアップデートが出来ません。
まずは以下画像を順番にご覧下さい。

SDKmanager.exeをクリックします。

新しく入れたいAndroidのバージョンをチェック

インストールボタンをクリック

エラーが出てしまいます。

エラーの内容は読んだとおりなのですが、アンチウィルスソフト、toolフォルダを開いていないか、閉じたら再度実行して下さい、という内容です。
実際問題toolディレクトリから実行を行っているわけなので、別のところからアップデートの実行を行う必要があります。
toolsディレクトリを複製して、複製先のbatファイルからアップデート実行
toolsディレクトリを複製する
toolsディレクトリを複製します。難しいことは考えず、ただ複製します。


後は先ほどと全く同じでアップデートを実行しましょう。

ここまでくればアップデートは大丈夫ですね。
ちょっと一癖ありましたが、Android4が出てしばらく。気軽に使ってWEB制作の効率も上げていきたいものです。
