以后的以后-庄心妍

S40524-073446-001
以后的以后


风决定要走 云怎么挽留
曾经抵死纠缠放空的手
情缘似流水 覆水总难收
我还站在你离开 离开的路口
你既然无心 我也该放手
何必痴痴傻傻纠缠不休
是情深缘浅 留一生遗憾
还是情浅缘深 一辈子怨偶
没有我以后 一个人少喝点酒
窗台外的衣服有没有人来收
以后的以后 你是谁的某某某
若是再见 只会让人更难受
没有你以后 一个人四处旅游
在某时某地交上三两个朋友
以后的以后 我牵着别人衣袖
若是有缘再见 也要学会笑着问候

你既然无心 我也该放手
何必痴痴傻傻纠缠不休
是情深缘浅 留一生遗憾
还是情浅缘深 一辈子怨偶
没有我以后 一个人少喝点酒
窗台外的衣服有没有人来收
以后的以后 你是谁的某某某
若是再见 只会让人更难受
没有你以后 一个人四处旅游
在某时某地交上三两个朋友
以后的以后 我牵着别人衣袖
若是有缘再见 也要学会笑着问候
若是有缘再见 也要学会笑着问候

因为每个人都有原则和自尊

~tmp1451881721
你人再好,不是每个人都会喜欢你,有人羡慕你,也有人讨厌你,也有人看不起你。生活就是这样,你所做的一切不能让每个人都满意,不要为了讨好别人而丢失自己的信仰和本性,因为每个人都有原则和自尊!

CActiveDataProvider, CArrayDataProvider, CSqlDataProvider做为gridview挂件的数据提供者的使用经验

首先构造测试数据 创建两个表:

--
-- 表的结构 `tbl_user`
--
 
CREATE TABLE IF NOT EXISTS `tbl_user` (
  `uid` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(20) NOT NULL,
  `password` VARCHAR(70) NOT NULL,
  PRIMARY KEY  (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 
--
-- 转存表中的数据 `tbl_user`
--
 
INSERT INTO `tbl_user` (`uid`, `username`, `password`) VALUES
(1, 'syang', 'syang');
 
-- --------------------------------------------------------
 
--
-- 表的结构 `tbl_userinfo`
--
 
CREATE TABLE IF NOT EXISTS `tbl_userinfo` (
  `infoid` INT(11) NOT NULL AUTO_INCREMENT,
  `nickname` VARCHAR(20) NOT NULL,
  `uid` INT(11) NOT NULL,
  PRIMARY KEY  (`infoid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 
--
-- 转存表中的数据 `tbl_userinfo`
--
 
INSERT INTO `tbl_userinfo` (`infoid`, `nickname`, `uid`) VALUES
(1, 'Song Yang', 1);

通过gii创建两个模型文件 User.php 和 Userinfo.php
修改User.php,添加关联代码

	public function relations()
	{
		return array(
		    'info'=> array(self::HAS_ONE, 'Userinfo', 'uid')
		);
	}

下面,我们建一个新的控制器,名为TestController.php,代码如下:

<?php
/**
 * Description of TestController
 *
 * @author syang
 */
class TestController extends Controller {
	public function actionIndex() {
 
		//AR数据提供
		$ar_provider = new CActiveDataProvider('User', array(
 
		));
 
		//Sql数据提供
		$sql = "select * from tbl_user, tbl_userinfo where tbl_user.uid=tbl_userinfo.uid";
		$count = User::model()->findBySql($sql)->count();
		$sql_provider = new CSqlDataProvider($sql, array(
		    'keyField'=>'uid',	//必须指定一个作为主键
		    'totalItemCount'=>$count,	//分页必须指定总记录数
		));
 
		//Array数据提供
		$sql = "select * from tbl_user, tbl_userinfo where tbl_user.uid=tbl_userinfo.uid";
		$array_data = Yii::app()->db->createCommand($sql)->queryAll();
		$array_provider = new CArrayDataProvider($array_data, array(
		    'keyField'=>'uid',	//必须指定一个作为主键
		));
 
		$this->render('index', array(
						'ar_provider'=>$ar_provider,
						'sql_provider'=>$sql_provider,
						'array_provider'=>$array_provider
 
					));
	}
}
?>

我们在view下建一个以控制器id命名的目录,如上为test,并在test目录下建立一个index.php的模块文件
代码如下:

<?php
 
echo "AR关联查询,示例:";
 
 $this->widget('zii.widgets.grid.CGridView', array(
 
	'id'=>'ar',
 
	'dataProvider'=>$ar_provider,
 
	'columns'=>array(
 
		'uid',
 
		array('header'=>'用户名', 'name'=>'username'),       //name对应字段名
 
		array('header'=>'密码', 'value'=>'$data->password'),  //用value这样写也可以
 
		'info.infoid',
		array('header'=>'昵称', 'name'=>'info.nickname'),
		//或者这样array('header'=>'昵称', 'value'=>'$data->info->nickname'),
 
		array(
 
			'class'=>'CButtonColumn',
 
		),
 
	),
 
));
 
echo "Sql 查询,示例:";
 
$this->widget('zii.widgets.grid.CGridView', array(
 
	'id'=>'sql',
 
	'dataProvider'=>$sql_provider,
 
	'columns'=>array(
 
		'uid',
 
		array('header'=>'用户名', 'name'=>'username'),
 
		array('header'=>'密码', 'value'=>'$data["password"]'),
 
		'infoid',
 
		array('header'=>'昵称', 'name'=>'nickname'),
 
		array(
 
			'class'=>'CButtonColumn',
 
		    	'viewButtonUrl'=>'Yii::app()->controller->createUrl("view",array("id"=>$data["uid"]))',
 
			'updateButtonUrl'=>'Yii::app()->controller->createUrl("update",array("id"=>$data["uid"]))',
 
			'deleteButtonUrl'=>'Yii::app()->controller->createUrl("delete",array("id"=>$data["uid"]))',
 
		),
 
	),
 
));
 
echo "Array 数据,示例:";
 
$this->widget('zii.widgets.grid.CGridView', array(
 
	'id'=>'array',
 
	'dataProvider'=>$array_provider,
 
	'columns'=>array(
 
		'uid',
 
		array('header'=>'用户名', 'name'=>'username'),
 
		array('header'=>'密码', 'value'=>'$data["password"]'),
 
		'infoid',
 
		array('header'=>'昵称', 'name'=>'nickname'),
 
		array(
 
			'class'=>'CButtonColumn',
 
		    	'viewButtonUrl'=>'Yii::app()->controller->createUrl("view",array("id"=>$data["uid"]))',
 
			'updateButtonUrl'=>'Yii::app()->controller->createUrl("update",array("id"=>$data["uid"]))',
 
			'deleteButtonUrl'=>'Yii::app()->controller->createUrl("delete",array("id"=>$data["uid"]))',
 
		),
 
	),
 
)); ?>

总结:上面的示例演示了,使用CActiveDataProvider, CArrayDataProvider, CSqlDataProvider的例子
最简单的就是使用CActiveDataProvider,其他两个,在使用gridview挂件时,需要稍微修改一下,因为gridview原有button列上的连接使用的是$data->这种对象的方式
由于sql与array返回的数据都是数组,所以后面的地方改成数组就可以了。本例还演示了模型关联时使用CActiveDataProvider与gridview的列子。读者可以反复测试体会Yii的强大功能。

YII CArrayDataProvider 的使用

利用CArrayDataProvider,可以对一个数组里面的数据进行分页
action代码:

public function actionPage(){
            $rawData = array(
                array('id'=>1,'username'=>'aa','password'=>'aaaaaa'),
                array('id'=>2,'username'=>'bb','password'=>'aaaaaa'),
                array('id'=>3,'username'=>'cc','password'=>'aaaaaa'),
                array('id'=>4,'username'=>'dd','password'=>'aaaaaa'),
                array('id'=>5,'username'=>'ee','password'=>'aaaaaa'),
                array('id'=>6,'username'=>'ff','password'=>'aaaaaa'),
                array('id'=>7,'username'=>'gg','password'=>'aaaaaa'),
                array('id'=>8,'username'=>'hh','password'=>'aaaaaa'),
                array('id'=>9,'username'=>'jj','password'=>'aaaaaa'),
                array('id'=>10,'username'=>'qq','password'=>'aaaaaa'),
                array('id'=>11,'username'=>'www','password'=>'aaaaaa'),
                array('id'=>12,'username'=>'xx','password'=>'aaaaaa'),
                array('id'=>13,'username'=>'zz','password'=>'aaaaaa'),
            );
 
            $dataProvider=new CArrayDataProvider($rawData, array(
                'id'=>'user',
                'sort'=>array(
                    'attributes'=>array(
                         'id', 'username', 'password',
                    ),
                ),
                'pagination'=>array(
                    'pageSize'=>10,
                ),
            ));
            $this->render('page',array('dataProvider'=>$dataProvider));
        }

views代码:

 $this->widget('zii.widgets.grid.CGridView', array(
            'id'=>'effectivepolicy-grid',
            'dataProvider'=>$dataProvider,
            'emptyText'=>'没有找到数据.',
            'nullDisplay'=>'-',
            'columns'=>array(
 
                array(
                    'name'=>'用户名',
                    'value'=>'$data["username"]',
                    'htmlOptions'=>array('style'=>'width:55px;')
                ),
                                array(
                    'name'=>'密码',
                    'value'=>'$data["password"]',
                    'htmlOptions'=>array('style'=>'width:55px;')
                ),
            ),
        ));

遇见 – 孙燕姿

iltZwgf471jpq

遇见

听见 冬天的离开
我在某年某月 醒过来
我想 我等 我期待
未来却不能因此安排

阴天 傍晚 车窗外
未来有一个人在等待
向左 向右 向前看
爱要拐几个弯才来

我遇见谁 会有怎样的对白
我等的人 他在多远的未来
我听见风来自地铁和人海
我排着队 拿着爱的号码牌

阴天 傍晚 车窗外
未来有一个人在等待
向左 向右 向前看
爱要拐几个弯才来

我遇见谁 会有怎样的对白
我等的人 他在多远的未来
我听见风来自地铁和人海
我排着队 拿着爱的号码牌

我往前飞 飞过一片时间海
我们也常在爱情里受伤害
我看着路 梦的入口有点窄
我遇见你是最美的意外
终有一天 我的谜底会揭开