宿の予約システムを作ってみる
公開日:
:
FuelPHP
題名も新たに FuelPHP を勉強していきます。間違いを発見したら教えていただければ幸いです。
理由はわかりませんが、なんとなく FuelPHP を使うならモデルは Model_Crud が標準なのかな?と思い、ここも勉強して見ることにしました。素の Model は前回の記事を参照してください。今回はこれを書き換えてみます。
前回のモデル部分は
from('yado_base'); $query->where('id',$id); return $query->execute()->as_array(); } }
これを Model_Curd に書き換えると次のようになります。たぶん^^;
class Model_Base extends \Model_Crud { protected static $_table_name = 'yado_base'; protected static $_primary_key = 'id'; }
つまり基本的なSQL部分は既に定義されているので、あらためてモデル側で書く必要が無い?ということのようです。一応解説すると、上のtable_name が使用するMySQLのテーブル。下のprimary_keyはプライマリーキーと読んだまんまですね。ここで疑問が…複数のテーブルを使う場合は???
次はコントローラー側を修正します。前回のソースは
class Controller_Base extends Controller { public function action_test($id) { $base = new Model_Base(); $user = array(); $user['name'] = 'admin'; $user['query'] = $base->get_user($id); return Response::forge( View::forge('base', $user) ); } }
これが今回の場合は次のように変わります。
class Controller_Base extends Controller { public function action_test($id) { $data = array(); $data['rows'] = Model_Base::find_by_pk($id); return View::forge('base', $data); } }
VIEWも変更します。
<?php foreach ($rows as $row): ?> ID : <?php echo $row['id']; ?>
名称 : <?php echo $row['name']; ?>
<?php endforeach; ?>
ここで「あれ?」っていう結果になりました。こんな時はプロファイラーを稼働させます。プログラム開発段階では、このプロファイリングが役立ちます。設定は app/config/config.php にあります。46行目近辺にある ’profiling’ => false, を ’profiling’ => true, とするだけです。ただし今回のようにデーターベースに関する情報を表示させるには、app/config/db.php も編集する必要があるようです。
'default' => array( 'type' => 'pdo', 'connection' => array( 'persistent' => false, ), 'identifier' => '`', 'table_prefix' => '', 'charset' => 'utf8', 'enable_cache' => true, 'profiling' => true, ), 'redis' => array( 'default' => array(
標準では ’profiling’ => false, となっています。これを上のように trueに変更します。app/config/development/db.php ではないのでご注意ください。
すると図のような感じで実行されたSQL文が確認できるようになります。便利♫
発行されたSQL文は
SELECT `yado_base`.* FROM `yado_base` WHERE `id` = '1' LIMIT 1 OFFSET 0 Possible keys: PRIMARY ·Type: system ·Rows: 1 ·Speed: 1.445 ms
出てきた画面は
SQL文に問題は無さそうだし、ためしにコントローラーの呼び出し部分を
$data['rows'] = Model_Base::find_one_by('id', $id);
と変えても変化がありません。ちなみにデーターベースには1件のみ登録されています…..(T_T) これはVIEWへのデータの渡し方がおかしいのではないか?VIEW側でやっていることは最低限だし。というわけでネットを徘徊しソースを検索。以下のように書換えたら成功しました。
$view = View::forge('base'); $data = array(); $data[] = Model_Base::find_by_pk($id); $view->set('data', $data); return $view;
VIEW側も調整
<?php foreach ($data as $row): ?> ID : <?php echo $row['id']; ?>
名称 : <?php echo $row['name']; ?>
<?php endforeach; ?>
まだまだ先は長い
Sponsored Link
関連記事
-
-
URSA mini と Davinci Resolveで映画みたいなCMを作ってみた
QUEENDOM 構想10年・制作5年! 総製作費120億円! 全米が鼻で笑った! 最初に
-
-
SONY α6300 ピクチャープロファイルの比較検討(最終)
欲しかった Kontakt 5 - Native Instrumentsが半額セール!!! 24,9
-
-
激安なマットボックス Matte Box M3 が届いたので開封し身体検査
懲りずに激安に挑戦のふたたびマットボックスを輸入。価格は 11,000円程度でした。アマゾンでも同じ
-
-
Brushless Gimbal 用外部液晶モニターの電源をlipoで!
なかなか値段の下がらないGH3を横目でチラチラ見ながら、My MoPI(笑)を改造する暑い日々。街を
-
-
Blackmagic Design DaVinci Resolve Lite 11 Beta をインストール
雨でジンバルのテスト撮影できないので、気になっていた Blackmagic Design DaVin
ご質問は掲示板へお願いいたします。