CakePHP モデル設計時に気をつけること
CakePHP1.3
CakePHPのモデル(データベース構造)の設計時に気をつけることをメモで書いておきます。
- id,name,created,modifiedなどのCakePHPの法則以外のフィールドで、違うテーブルに、同じ名前のフィールドを作らない方がよい。理由は、orderにフィールドを利用するときに、モデル名のエイリアスをつけない場合があるので、エラーになる可能性がある。
CakePHP1.3
CakePHPのモデル(データベース構造)の設計時に気をつけることをメモで書いておきます。
PHP
CakePHP
若干めんどくさいのですが、次のようにします。
たとえば、ProductStockというモデルのgetStockWithPriceMasterを呼びだしたい場合です。
App::import('model','ProductStock'); $product_stock = new ProductStock(); $product_stock->getStockWithPriceMaster( $customer_id);
CakePHP1.3
CakePHPの本家マニュアルサイトにプルダウンメニュー(
echo $form->input('fruit', array(
‘type’=>’select’,
‘options’=>array(
array(‘apple’=>’りんご’,
‘banana’=>’バナナ’,
‘melon’=>’メロン’
)
)
));
optionsという配列の、keyが”value”で、value が表示される名称です。
//出力 <option value="apple">りんご</option> <option value="banana">バナナ</option> <option value="melon">メロン</option>
CakePHP 1.2.3.8166
//例:view ファイルに記述 //アクション addに4というパラメーターを送りたい場合 echo $form->create( null, array('url' => array('controller' => 'projects', 'action' => 'add', 4 ) ) );
ファイルをアップロードするフォームの作り方が、本家のサイトでリンクが違うようになっているので?ちょっと書いておきます。
ここではバリデーションなど余分なことはつけず、フォームの作り方だけ紹介しますね。
フォームヘルパーを使えば、簡単にできます。
データベースのテーブル名 wimages フィールド img_name に画像ファイル名が保存されるようにします。 <モデル> app/models/wimage.php を下記のように作ります。 class Wimage extends AppModel { var $name = 'Wimage'; }
<コントローラー> app/controllers/wimages_controller.php を下記のように作ります class WimagesController extends AppController { var $name = 'Wimages'; function upload() {
if (!empty($this->data)) {
//アップロードするファイルの場所
$uploaddir = ‘C:\Program Files\xampp\htdocs\cake\img\\’;
$uploadfile = $uploaddir . basename($this->data[‘Wimage’][‘img_name’][‘name’]);
//画像をテンポラリーの場所から、上記で設定したアップロードファイルの置き場所へ移動
if (move_uploaded_file($this->data[‘Wimage’][‘img_name’][‘tmp_name’], $uploadfile)){
//成功したら、Successを表示
print “Success”;
}else{
//失敗したら、errorを表示
print “error”;
}
} } }
<ビュー> views/wimages/upload.ctp を下記のように作ります。 <h1>ファイル追加</h1> <?php //フォームをこの形で作る必要があります。 echo $form->create('Wimage', array('enctype' => 'multipart/form-data',
‘action’ => ‘upload’) );
echo $form->input('Wimage.img_name', array('type'=>'file' )); echo $form->end('Save Wimage'); ?>
参考
CakePHPフォームの作成
http://book.cakephp.org/ja/view/183/Creating-Forms
CakePHP File Fields
http://book.cakephp.org/view/303/File-Fields