ORMによるデータの登録[kohana 3.x]
ここでは、ORMによる登録(INSERT・UPDATE)処理を勉強してみます。ORMによるデータの取得はできているものとして 進めます。
単純なINSERTとUPDATE
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>