php:fuelphp:oil_generate_model

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
php:fuelphp:oil_generate_model [2012/11/24 17:18] – [テーブル名に'_'(アンダースコア) を多用しなければならない場合] ともやんphp:fuelphp:oil_generate_model [2024/03/27 10:51] (現在) – [create_at、update_at を timestamp 型にする方法] ともやん
行 5: 行 5:
 <code> <code>
 $ cd fuelapp $ cd fuelapp
-$ oil generate model tablename colume1:varchar[10] colume2:int column3:datetime column4:text+$ oil generate model tablename column1:varchar[10] column2:int column3:datetime column4:text
 </code> </code>
 または cli 版の php を明示して実行 または cli 版の php を明示して実行
行 30: 行 30:
 \\ \\
 fuelapp/fuel/app/classes/model/tablename.php fuelapp/fuel/app/classes/model/tablename.php
-<sxh php collapse:true>+<code php collapse:true>
 <?php <?php
  
行 56: 行 56:
     );     );
 } }
-</sxh>+</code>
 fuelapp/fuel/app/migrations/001_create_tablenames.php fuelapp/fuel/app/migrations/001_create_tablenames.php
-<sxh php collapse:true>+<code php collapse:true>
 <?php <?php
  
行 84: 行 84:
     }     }
 } }
-</sxh>+</code>
  
 ===== スキーマの生成 ===== ===== スキーマの生成 =====
行 97: 行 97:
 処理済みの migration は以下のように記録される。\\ 処理済みの migration は以下のように記録される。\\
 fuelapp/fuel/app/config/development/migrations.php fuelapp/fuel/app/config/development/migrations.php
-<sxh php collapse:true>+<code php collapse:true>
 <?php <?php
 return array( return array(
行 119: 行 119:
  'table' => 'migration',  'table' => 'migration',
 ); );
-</sxh>+</code>
 mysql の migration テーブルにも記録される。<code> mysql の migration テーブルにも記録される。<code>
 mysql> use fuel_db; mysql> use fuel_db;
行 138: 行 138:
 </code> </code>
 fuelapp/fuel/app/classes/model/tablename.php fuelapp/fuel/app/classes/model/tablename.php
-<sxh php collapse:true>+<code php collapse:true>
 <?php <?php
  
行 164: 行 164:
     );     );
 } }
-</sxh>+</code>
 fuelapp/fuel/app/migrations/001_create_tablenames.php fuelapp/fuel/app/migrations/001_create_tablenames.php
-<sxh php collapse:true>+<code php collapse:true>
 <?php <?php
  
行 191: 行 191:
         \DBUtil::drop_table('tablenames');         \DBUtil::drop_table('tablenames');
     }     }
-}</sxh>+}</code>
  
 ===== 生成済みテーブルを強制上書きする方法 ===== ===== 生成済みテーブルを強制上書きする方法 =====
 既に生成済みのテーブルを強制的に上書き生成するには -f または --force を指定する。 既に生成済みのテーブルを強制的に上書き生成するには -f または --force を指定する。
 <code> <code>
-$ oil g model tablename colume1:varchar[10] colume2:int column3:datetime column4:text -f+$ oil g model tablename column1:varchar[10] column2:int column3:datetime column4:text -f
 </code> </code>
 +
 +===== テーブル名を複数形で扱いたくない場合 =====
 +tablename という model を生成すると以下のようになります。
 +^ モデルクラスファイル名(単数形)  | fuelapp/fuel/app/classes/model/tablename.php  |
 +^ モデルクラス名(単数形)  | Model_Tablename  |
 +^ マイグレーションファイル名(複数形)  | fuelapp/fuel/app/migrations/001_create_tablenames.php  |
 +^ マイグレーションクラス名(複数形)  | Create_tablenames  |
 +^ 物理テーブル名(複数形)  | tablenames  |
 +Fuel の ORM は、特に指定がないとテーブル名を複数形で扱うので、もともと存在しているテーブルを扱う場合や設計の都合で複数形にできない場合は、手修正する必要がある。
 +  - マイグレーションファイル名を修正する。<code>
 +001_create_tablenames.php -> 001_create_tablename.php
 +</code>
 +  - マイグレーションクラス、物理テーブル名を修正する。\\ fuelapp/fuel/app/migrations/001_create_tablename.php\\ <code php collapse:true highlight:[5,9]>
 +<?php
 +
 +namespace Fuel\Migrations;
 +
 +class Create_tablename
 +{
 +    public function up()
 +    {
 +        \DBUtil::create_table('tablename', array(
 +            'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),
 +            'column1' => array('constraint' => 10, 'type' => 'varchar'),
 +            'column2' => array('constraint' => 11, 'type' => 'int'),
 +            'column3' => array('type' => 'datetime'),
 +            'column4' => array('type' => 'text'),
 +            'created_at' => array('type' => 'timestamp'),
 +            'updated_at' => array('type' => 'timestamp'),
 +
 +        ), array('id'));
 +    }
 +
 +    public function down()
 +    {
 +        \DBUtil::drop_table('tablenames');
 +    }
 +}
 +</code>
 +  - モデルクラスに以下を記述する。\\ fuelapp/fuel/app/classes/model/tablename.php\\ <code php collapse:true highlight:[5]>
 +<?php
 +
 +class Model_Tablename extends \Orm\Model
 +{
 +    public static $_table_name = "tablename";
 +    
 +    protected static $_properties = array(
 +        'id',
 +        'column1',
 +        'column2',
 +        'column3',
 +        'column4',
 +        'created_at',
 +        'updated_at'
 +    );
 +
 +    protected static $_observers = array(
 +        'Orm\Observer_CreatedAt' => array(
 +            'events' => array('before_insert'),
 +            'mysql_timestamp' => true,
 +        ),
 +        'Orm\Observer_UpdatedAt' => array(
 +            'events' => array('before_save'),
 +            'mysql_timestamp' => true,
 +        ),
 +    );
 +}
 +</code>
 +※Fuel は Inflector::pluralize()、Inflector::singularize() で単数/複数形の単語を生成している。
  
 ===== テーブル名に'_'(アンダースコア) を多用しなければならない場合 ===== ===== テーブル名に'_'(アンダースコア) を多用しなければならない場合 =====
行 220: 行 289:
 オートロードできるようにするには、以下のファイルを記述する。\\ オートロードできるようにするには、以下のファイルを記述する。\\
 fuelapp/app/bootstrap.php fuelapp/app/bootstrap.php
-<sxh php collapse:true highlight:[14]>+<code php collapse:true highlight:[14]>
 <?php <?php
  
行 252: 行 321:
 // Initialize the framework with the config file. // Initialize the framework with the config file.
 Fuel::init('config.php'); Fuel::init('config.php');
-</sxh>+</code> 
 + 
 +===== Observer を無効化したい場合 ===== 
 +$_observers をクリアする関数を定義してそれを呼び出す。 
 +<code php collapse:true highlight:[26,27,28,29]> 
 +<?php 
 + 
 +class Model_Tablename extends \Orm\Model 
 +
 +    protected static $_properties = array( 
 +        'id', 
 +        'column1', 
 +        'column2', 
 +        'column3', 
 +        'column4', 
 +        'created_at', 
 +        'updated_at' 
 +    ); 
 + 
 +    protected static $_observers = array( 
 +        'Orm\Observer_CreatedAt' => array( 
 +            'events' => array('before_insert'), 
 +            'mysql_timestamp' => true, 
 +        ), 
 +        'Orm\Observer_UpdatedAt' => array( 
 +            'events' => array('before_save'), 
 +            'mysql_timestamp' => true, 
 +        ), 
 +    ); 
 + 
 +    public static function clear_observers() 
 +    { 
 +        static::$_observers = array(); 
 +    } 
 +
 +</code> 
  • php/fuelphp/oil_generate_model.1353745128.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)