長いテキストで申し訳ありませんが、私の問題は長いです:-)私はこのようなグリッドを作りました
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'title',
'type'=>'raw',
'value'=>'CHtml::link(CHtml::encode($data->title), $data->url)'
),
array(
'name'=>'create_time',
'type'=>'raw',
'value' => 'Yii::app()->dateFormatter->format("yyyy", $data->create_time)',
),
),
));
そして、タイトルのフィルタリングのように、テキストフィールドで日付でフィルタリングしたい。コードでコントローラを作成しました
$model=new Post('search');
if(isset($_GET['Post']))
$model->attributes=$_GET['Post'];
$this->render('admin',array(
'model'=>$model,
));
モデルの検索方法
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('title',$this->title,$partialMatch=true);
$criteria->compare('create_time',$this->create_time,$partialMatch=true);
return new CActiveDataProvider('Post', array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'status, update_time DESC',
),
));
}
ルールを忘れない()
array('title, create_time', 'safe', 'on'=>'search')
今日の日付で 2 つのレコードがあります。タイトル フィルタリングは正常に機能しますが、「create_time」列のフィルター テキスト フィールドに「2015」と入力して Enter キーを押すと、「結果が見つかりません」というメッセージが表示されます。
私はこれを試しました:
array(
'name'=>'create_time',
'type'=>'raw',
'value' => 'Yii::app()->dateFormatter->format("dd MMMM yyyy", $data->create_time)',
'filter' => CHtml::listData(Post::model()->findAll(array('order'=>'create_time')), 'create_time', 'create_time'),
),
それはうまくいくようですが、私のデータベースでは create_time はinteger(11) (必須) であり、listdata の値は日付ではなく数値であり、年だけでなく完全な日付を表します。私は、create_time レコードの値から一意の年の値を持つ配列を作成しました。$rok['2015'] => '2015' のような配列を出力します
$model_post = new Post;
$wyniki = $model_post::model() -> findAllBySql('SELECT create_time FROM tbl_post');
for($i=0;$i<count($wyniki);$i++)
{
$rok_temp[$i] = Yii::app()->dateFormatter->format("yyyy", $wyniki[$i]->create_time);
$rok[$rok_temp[$i]] = $rok_temp[$i];
}
$rok = array_unique($rok);
$rok を送信して表示し、
array(
'name'=>'create_time',
'type'=>'raw',
'value' => 'Yii::app()->dateFormatter->format("dd MMMM yyyy", $data->create_time)',
'filter' => $rok,
),
と
$criteria->compare('create_time',Yii::app()->dateFormatter->format("yyyy", $this->create_time));
しかし、フィルタリングすると「結果が見つかりません」と表示されます。私は何を間違えたのですか?