CakePHPでHABTMなデータを保存する方法
環境
- CakePHP 1.2.1.8004
毎回忘れてしまうのでメモ。
例えばArticleモデルとTagモデルがHABTMで結ばれていた場合、Article保存時にTagを複数一度に保存する方法です。
$this->data['Article']['title'] = 'タイトル'; $this->data['Article']['body'] = '本文'; $this->data['Tag'] = array(1, 2, 3); //Tagのid $this->Article->saveAll($this->data);
CakePHPのTree Behaviorのフィールドの規約を変更する方法
環境
- CakePHP 1.2.1.8004
問題
ツリービヘイビア(Tree Behavior)ではデフォルトでparent_id, lft, rghtフィールドをテーブルに入れる必要があります。
しかし、例えば、既存テーブル内のparent_idにあたるフィールドの名前が「p_id」などだった場合、デフォルトの値を変更したくなります。
解決法
ツリービヘイビアをモデルで呼び出す際に、
var $actsAs = array('Tree' => array('parent' => 'p_id'));
とします。
lft, rghtフィールドもそれぞれ"left", "right"キーに値を入れることで変更できます。
Ubuntu上のVirtualBox内で起動しているマシンにSSH接続する方法
環境
- Ubuntu 8.10
- VirtualBox 2.0.4 OSE
- Debian GNU/Linux 5.0
- VirtualBox内で起動しています
方法
仮想マシンを停止させておき、ホスト側(Ubuntu側)の端末で以下のコマンドを実行します。
$ VBoxManage setextradata "(仮想マシン名)" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP $ VBoxManage setextradata "(仮想マシン名)" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22 $ VBoxManage setextradata "(仮想マシン名)" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 50022
ホスト側のポート番号を「50022」にしていますが、これは適当な番号で大丈夫だそうです。
ホスト側からSSHでリモート側(Debian側)にアクセスするには、
$ ssh -p 50022 -l (ユーザ名) localhost
というコマンドを実行します。
HTTPなど、他の接続についても、同じ方法で接続できるみたいです。
なお、この設定をすると、ホスト側の「/home/(ユーザ名)/.VirtualBox/Machines/(仮想マシン名)/(仮想マシン名).xml」の中身が変更されます。
Debianのインストール, 設定メモ
環境
- Ubuntu 8.10
- VirtualBox OSE 2.0.4
- Debian GNU/Linux 5.0
Debian本体のインストール
Installer boot menu
「Install」
[!!] Choose language
「Japanese - 日本語」
[!] キーボード配置の選択
「米国」
[!] ネットワークの設定 (1)
ホスト名を入力する。
[!] ネットワークの設定 (2)
ドメイン名を入力する。
[!!] ディスクのパーティショニング (1)
「ガイド - ディスク全体を使う」
[!!] ディスクのパーティショニング (2)
ディスクを選択する。
[!] ディスクのパーティショニング
「すべてのファイルを1つのパーティションに (初心者ユーザには推奨)」
[!!] ディスクのパーティショニング (3)
「パーティショニングの終了とディスクへの変更の書き込み」
[!!] ディスクのパーティショニング (4)
「はい」
[!!] ユーザとパスワードのセットアップ (1)
rootのパスワードを入力
[!!] ユーザとパスワードのセットアップ (2)
ユーザの名前とアカウント名、パスワードを入力
[!] パッケージマネージャの設定 (1)
「日本」
[!] パッケージマネージャの設定 (3)
プロキシ情報の入力
[!] popularity-content を設定しています
「いいえ」
[!] ソフトウェアの選択
「標準システム」
[!!] インストールの完了
CDを取り出して(マウント解除して)「続ける」
ホスト側でSSH接続
文字化け問題を回避するため。
Ubuntu上のVirtualBox内で起動しているマシンにSSH接続する方法 - bojovs tech blog
sudoをインストール
デフォルトでは入っていないので入れる必要があるみたいです。
# apt-get install sudo # visudo (「(ユーザ名) ALL=(ALL) ALL」を入力) # reboot
おしまい
この記事の下書きはこちら。
http://docs.google.com/Doc?id=d9h95g5_46dzvbh7c7
今日はねこび〜んの誕生日!
Nabble - ねこび〜ん
1歳のお誕生日おめでとう!これからもよろしくね!
追記
僕の誕生日でもあります!21歳です!興味ないと思いますが、一応報告しておきます!ありがとうございます!