Cakephp2.6でbelongsToに複数のモデルをセット

Cakephp2.6でbelongsToに複数のモデルをセットしたかったので調べました

基本的なことは
アソシエーション: モデル同士を繋ぐ — CakePHP Cookbook 2.x ドキュメント
にありますが、複数の例がない..

class Job extends AppModel {
    public $belongsTo = ['Part', 'Person'];
}

と配列で複数渡せばできました

Cakephp2.7にDebugkitを入れる

ComposerでCakephpにphpunitとdebugkitを入れてみる | bgbgbg
でDebugkitをいれてましたが、Cakephp 3.0が出た影響で、2.x系にいれるときに
cakephp/debug_kit
に、ばっちし書いてないのでメモ

Cakephpのプログラムファイルの下にcomposer.jsonがなければ用意します
こんな感じであればOKですが

$ tree -L 1

.
├── Config
├── Console
├── Controller
├── Lib
├── Locale
├── Model
├── Plugin
├── Test
├── Vendor
├── View
├── composer.json
├── composer.lock
├── index.php
├── tmp
└── webroot

$ vim composer.json

{
    "config": {
        "vendor-dir": "Vendor/"
    }
}

を指定しておくとCakephpのディレクトリ構成にしたがっててよさそうです
これでcomposerでDebugkitをバージョン指定していれます

$ php composer.phar require –dev cakephp/debug_kit “~2.2”

あとは

$ vim Config/bootstrap.php

CakePlugin::load('DebugKit');

を追記すればOKです

Toolbarを出すには

$ vim Controller/AppController.php

class AppController extends Controller {
    public $components = array('DebugKit.Toolbar');
}

で出せます

Cakephpでルーティングが動かない!?

ComposerでいれたCakephpを動かしてみる | bgbgbg
の手順で新しい環境に入れて、localhost/sample/myappとアクセスするとエラーが..

cakephp-error

デフォルトルートを見るはずがAppControllerを見てしまってるようです
Apacheをいれてて、mod_rewriteは有効にしたし、どうした..とはまりましたが原因は

ls -al /var/www/html/

sample -> /home/user/sample/myapp

とシンボリックリンクの貼る位置を間違えていたのが原因でした

composerでいれる手順として

$ mkdir /home/user/sample/ & cd /home/user/sample/
$ vim composer.json
$ composer install
$ Vendor/bin/cake bake project app

としたので
Cakephpのパッケージファイルは /home/user/sample/Vendor/cakephp
Cakephpの作ったアプリは /home/user/sample/myapp

ComposerでいれたCakephpを動かしてみる | bgbgbg
の設定だと

$ ls -s /home/user/sample /var/www/html/sample
としてしまったところを

$ ls -s /home/user/sample/myapp /var/www/html/sample

として http://localhost/sample
とアクセスする必要がありました

CakephpでOracleのrowidも取る

CakephpでOracleのrowidが取りたかったので調べました

モデルのvirtual fieldを使うといいようです
バーチャルフィールド — CakePHP Cookbook 2.x ドキュメント

モデルに追記

     public $virtualFields = array('rowid'=>'rowid');

これでfindとかすれば、rowidも合わせて取れました