当ソースの最新版はGithubにUPしてあります。
詳しくは、以下を御覧ください。
■FuelPHPで既存テーブルからScaffoldするTaskをgithubに。
http://madroom-project.blogspot.jp/2012/06/fuelphpscaffoldtaskgithub.html
--
2012/06/05 追記
当記事に記載のTaskを改良した、admin対応版を、以下に書きました。
FuelPHPで既存テーブルからScaffoldするTaskのadmin対応版。
http://madroom-project.blogspot.jp/2012/06/fuelphpscaffoldtaskadmin.html
--
FuelPHPでのScaffoldは、以下のように、コマンド実行時にカラム名や型を指定します。
php oil g scaffold monkey name:string description:text
http://docs.fuelphp.com/packages/oil/generate.html#scaffolding
ただ、私の場合、DB設計にERMasterを使用している関係で、Scaffoldと相性が悪いなぁと。
http://ermaster.sourceforge.net/index_ja.html
(DDLやドキュメントをERMasterで生成してしまうので。)
そこで、以下のTaskを作成しました。
php oil r scafdb $tablename
の形式で、既存テーブル名を指定してScaffoldします。
改良点は多々あると思いますが、とりあえず。
app/tasks/scafdb.php
<?php
namespace Fuel\Tasks;
class Scafdb
{
public static $ignore_fields = array(
'id',
'created_at',
'updated_at',
);
/**
* Scaffold by database table.
*
* Usage (from command line):
*
* php oil r scafdb $tablename
*/
public static function run($tablename='')
{
if(!strlen($tablename))
{
exit('Usage : php oil r scafdb $tablename');
}
$args = self::mk_args(\DB::list_columns($tablename));
array_unshift($args, $tablename);
$subfolder = 'orm'; // TODO:
call_user_func('Oil\Generate_Scaffold::forge', $args, $subfolder);
}
private static function mk_args($cols)
{
$args = array();
foreach ($cols as $col)
{
if(in_array($col['name'], self::$ignore_fields))
{
continue;
}
$constraint = ''; // TODO:
$args[] = $col['name'] . ':' . $col['data_type'] . $constraint;
}
return $args;
}
}
/* End of file tasks/scafdb.php */
P.S.
--no-timestampオプションは効きました。
php oil r scafdb $tablename --no-timestamp
その他は確認していません。。。
No comments:
Post a Comment