facebook twitter hatena line email

Php/fuelphp/db orm

提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:17時点における127.0.0.1 (トーク)による版 (ページの作成:「==crudとは== 「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」をそれぞれ頭文字で表したものでクラッ...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

crudとは

「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」をそれぞれ頭文字で表したものでクラッドと読む

必須設定

  1. ormパッケージを使用可能に設定する

fuel/app/config/config.php

-188                         //'orm',
+188                         'orm',


以下ファイルを作成

classes/model/test.php

class Model_Test extends Orm\Model
{
    protected static $_properties = array(
        'id',
        'name',
        'created_at',
        'updated_at'
    );
    protected static $_observers = array(
        'Orm\Observer_CreatedAt' => array(
            'events' => array('before_insert'),
            'mysql_timestamp' => false,
        ),
        'Orm\Observer_UpdatedAt' => array(
            'events' => array('before_save'),
            'mysql_timestamp' => false,
        ),
    );
}

データ取得

$test = Model_Test::find(1);
echo $test->name; // taro
var_dump($test->to_array()); // 連想配列で取得

データ取得(最初の1行

$test = Model_Test::first();
echo $test->name; // taro
$test = Model_Test::find('first', array('where' => array('name' => 'taro')));
print $test->name; // taro

データ全部取得

$tests = Model_Test::find('all'); // 連想配列の中にモデルクラスが格納されている
foreach ($tests as $test) {
  echo $test->name; // taro
}

データ条件取得

$tests = Model_Test::find('all', array(
   'where' => array(
       array('category_id', 1),
       ),
   ),
));
$tests = Model_Test::find('all', array(
   'where' => array(
       array('category_id', 1),
       'or' => array(
           array('category_id', 2),
       ),
   ),
));

データ条件&limit付き

$tests = Model_Test::find('all', array('limit' => 9
       ,'order_by' => array('name')));

データ条件順序指定

'order_by' => array('date' => 'desc'),

データ挿入

$test = Model_Test::forge(array(
    'name' => 'taro',
));
if ($test and $test->save()) {

データ更新

$test = Model_Test::find(1);
$test->name = 'taro';
if ($test and $test->save()) {

データ削除

if ($test = Model_Test::find(1))
{
      $test->delete();

注意

fuelphp1.1からシンプルなModel_Crudが使えるようになったので混同しないように。

modelディレクトリの下の階層にモデルクラスを作る場合のクラス名

$data['project_hoge'] = Model_Project_Hoge::find($id);

vi model/project/hoge.php
class Model_Project_Hoge extends \Orm\Model
{
  protected static $_properties = array(
  以下略