株式会社ラソール 技術メモ

株式会社ラソール 技術メモ

社内用の覚え書きです。間違っている箇所などご指摘頂けたら幸いです。

Amebaでブログを始めよう!
http://www.yiiframework.com/forum/index.php/topic/29225-tip-using-phpexcel-with-yii/
↑phpexcelを使う方法

要約すると
1.phpexcelのzipを展開
2.中身のPHPExcelディレクトリをprotected/extensionsにコピー
3.PHPExcel.phpをextensions直下に置く
4.main.phpのcomponentsに以下を追加
'excel'=>array(
'class'=>'application.extensions.PHPExcel',
),
5.importのarrayが以下が入っていない場合は追加
'application.extensions.*',
6.PHPExcel/Autoloader.phpのPHPExcel_Autoloader::Registerのコードを以下の様に書き換える
$functions = spl_autoload_functions();
foreach($functions as $function)
spl_autoload_unregister($function);
$functions=array_merge(array(array('PHPExcel_Autoloader', 'Load')), $functions);
foreach($functions as $function)
$x = spl_autoload_register($function);
return $x;

以上。

たとえばfieldというカラムが有ったとすると
view側
<?php echo $form->textField($model,'field[0]'); ?>~
<?php echo $form->textField($model,'field[1]'); ?>
model側
// $criteria->compare('field',$this->field,true);
$criteria->addCondition("field BETWEEN '" . $this->field[0] . "' AND '" . $this->field[0] . "'");
こんな感じでやればうまくいくっぽい

■migrationを実行すると以下のエラーが出る

Creating migration history table "tbl_migration"...exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[420
00]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes. The SQL statement executed was: CREATE TABLE `tbl
_migration` (
`version` varchar(255) NOT NULL PRIMARY KEY,
`apply_time` int(11)
)'

■対処法

MigrateCommand.phpのcreateMigrationHistoryTableの
'version'=>'string NOT NULL PRIMARY KEY',

'version'=>'string CHARACTER SET ASCII NOT NULL PRIMARY KEY',
に変更する。