Cakephp2.6でbelongsToに複数のモデルをセットしたかったので調べました
基本的なことは
アソシエーション: モデル同士を繋ぐ — CakePHP Cookbook 2.x ドキュメント
にありますが、複数の例がない..
class Job extends AppModel {
public $belongsTo = ['Part', 'Person'];
}
と配列で複数渡せばできました
ひびのきろく
Cakephp2.6でbelongsToに複数のモデルをセットしたかったので調べました
基本的なことは
アソシエーション: モデル同士を繋ぐ — CakePHP Cookbook 2.x ドキュメント
にありますが、複数の例がない..
class Job extends AppModel {
public $belongsTo = ['Part', 'Person'];
}
と配列で複数渡せばできました
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');
}
で出せます
ComposerでいれたCakephpを動かしてみる | bgbgbg
の手順で新しい環境に入れて、localhost/sample/myappとアクセスするとエラーが..
デフォルトルートを見るはずが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が取りたかったので調べました
モデルのvirtual fieldを使うといいようです
バーチャルフィールド — CakePHP Cookbook 2.x ドキュメント
モデルに追記
public $virtualFields = array('rowid'=>'rowid');
これでfindとかすれば、rowidも合わせて取れました