ここでは、ORMによる登録(INSERT・UPDATE)処理を勉強してみます。ORMによるデータの取得はできているものとして 進めます。
ORMでデータをINSERTするには、モデルのインスタンスをキーの指定無しで生成し項目に値を セット後saveメソッドを実行します。
$task = ORM::factory('task'); $task->task = 'kohana ORM 調査'; $task->save();
上記例では、task項目に「kohana ORM 調査」をセットしたレコードがテーブルに追加されます。
データのUPDATEを行うには、インスタンスの生成時にキーを指定します。更新する項目に 値を設定し、saveメソッドを実行します。
$task = ORM::factory('task',3); $task->limit = '2010/06/12 12:00:00'; $task->save();
項目へ登録する値の指定方法に、valuesメソッドを使う方法もあります。項目名をキーとした連想配列を 渡すことで項目値が設定できます。
$task = ORM::factory('task'); $task->values(array('task' => 'kohana ORM 調査', 'limit' => '2010/06/12 12:00:00'; $task->save();
複数レコード更新する場合は次のように作成します。
$task = ORM::factory('task'); $task->status = 1 $task->where('status', '=', 0)->save_all();
上記例では、status項目が「0」のデータをすべて「1」に更新しています。
ビューからデータを受け取り登録するまでを作成してみます。
コントローラーに表示と登録の処理を作成します。
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Task extends Controller_Template_Default { public function action_index() { } public function action_posts() { $tasks = new Model_Task(); $this->template->content = View::factory('blocks/posts') ->bind('message',$message) ->bind('tasks',$tasks); $message = ""; if($_POST) { $tasks->values($_POST); $tasks->save(); } $tasks = ORM::factory('task')->find_all(); } }
フォームからポストされた場合登録後データを表示し、それ以外の場合データを取得して表示します。
ビューは、次のように作成します。
<p> <?php if(!empty($message)) echo $message;?> </p> <div class="span-24 last"> <table class="tasks"> <?php while($tasks->valid()):?> <tr> <td><?php echo $tasks->get('task');?></td> <td><?php echo $tasks->get('limit');?></td> </tr> <?php $tasks->next();?> <?php endwhile;?> </table> <hr> <?php echo Form::open();?> <p> <?php echo Form::label('タスク:');?> <?php echo Form::input('tasks');?> </p> <p> <?php echo Form::label('期限:');?> <?php echo Form::input('limits');?> </p> <?php echo Form::submit(NULL, 'submit');?> <?php Form::close();?> </div>
Copyright 1997-2010 BBB All rights reserved.