yii框架之增删改查(一)

在工作室原有项目的基础上,新增一个news板块进行练习PHP最基本的增删改查。

目录:

一、新建数据库

二、连接数据库

三、定义 AR 类(创建model)

四、控制器(contoller)

五、增删改查方法

1.查找全部信息

2.通过id查找信息

3.删除新闻

4.增加新闻

5.修改新闻

一、新建一个数据库(或者利用原有数据库)

我新建了一个数据库,名为db_new。新建名为t_news的表。包含五个属性。

yii框架之增删改查(一)_第1张图片

二、连接数据库

打开main.php , 具体目录如下:

yii框架之增删改查(一)_第2张图片

修改本地数据库代码,将数据库名跟用户名、密码该为自己数据库对应的。

    //本地的数据库
        'db'=>array(
            'connectionString' => 'mysql:host=127.0.0.1;dbname=db_new', //mysql:host=125.222.222.73 本地数据库
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => 'root',
            'charset' => 'utf8',
            'tablePrefix' =>'t_',
        ),

 

 

三、定义 AR 类(创建model)

 

 

要访问一个数据表,我们首先需要通过集成 CActiveRecord 定义一个 AR 类。每个 AR 类代表一个单独的数据表,一个 AR 实例则代表那个表中的一行。

在此目录下。新建PHP文件,继承CActiveRecord。

yii框架之增删改查(一)_第3张图片

主要写两个方法,只需将第二个方法(tableName())中的return 该为自己数据库中表的名字,我的是news。

class News extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    
    public function tableName()
    {
        return '{{news}}';   //return 't_news'
    }

}

 

注:默认情况下,AR 类的名字和数据表的名字相同。如果不同,请覆盖 tableName() 方法。

 

  引入的 表前缀功能 AR类的 tableName() 方法可以通过如下方式覆盖

public function tableName(){
return '{{news}}'; //return 't_news'; 表的名字
}

这就是说,我们将返回通过双大括号括起来的没有前缀的表名,而不是完整的表的名字。

四、控制器(Controller)

在controller文件夹下新建一个文件夹,命名为news。在news中新建一个名为 NewsController的controller,并继承Controller。

yii框架之增删改查(一)_第4张图片yii框架之增删改查(一)_第5张图片

class NewsController extends Controller
{ ***********
}

 

五、编写增删改查方法

 

因为工作室项目的html文件都在这个目录下,因此我们在这个目录下,新建一个名为news的文件夹,我们的html就放在该文件夹下。

yii框架之增删改查(一)_第6张图片

 

1.查找全部信息

(1)news下新建html文件,名为list_news.html

yii框架之增删改查(一)_第7张图片

(2)在controller中写查看全部新闻的方法。在controller中的方法名要加action,可以自动识别。

/**
* 全部新闻
*/
public function actionGetNews(){
$list = News::model()->findAll(); //将t_news表中全部信息存到 $list中
$this->smarty->assign('list',$list);
$this->smarty->display('news/list_news.html');//跳到对应的html页面,内容展示
// var_dump($list);
}

对应list_news.html的代码

 <{foreach from=$list item=news}>
 <{/foreach}> 
标题 操作 内容 时间
<{$news.date}> <{$news.title}> <{$news.writer}> 删除 查看详情 修改 添加

 

简单展示如下图所示:

 

yii框架之增删改查(一)_第8张图片

2.通过id查找信息

点击新闻页面的查看详情,可查看新闻的全部内容。

  查看详情

对应controlle中的方法:

   /**
     * 通过id查找一条新闻
     */
    public function  actionGetNewsById(){
        $id=$_GET['id'];
        $news=News::model()->find('id=:id',array(':id'=>$id));
        $this->smarty->assign('news',$news);
        $this->smarty->display('news/concrete_content.html');
    }

 

将新闻的详细信息,在concrete_content.html中进行展示。

 

<{$news.title}>

内容 <{$news.content}>
作者 <{$news.writer}>
时间 <{$news.date}>

 

简单页面展示如下:

 

yii框架之增删改查(一)_第9张图片

3.删除新闻

删除

将对应新闻的id传到controller,删除对应的新闻,调用查看全部新闻方法,返回到展示新闻页面。

 /**
     * 删除新闻
     */
    public function  actionGetDeleteNews()
    {
        $id=$_GET['id'];
        $news=News::model()->findByPk($id);
        $news->delete();                    // 从数据表中删除此行
        $this->redirect(array(getNews));
    }

 

4.增加新闻

 

<a href="<{$website}>/news/News/toAddNews">添加a>

通过controller中的方法,跳转到增加新闻页面。

/**
* 跳转到增加新闻
*/
public function actionToAddNews(){
$this->smarty->display('news/add_news.html');
}

 

增加新闻html

 

标题名称:
文章内容:
文章作者:

 

将添加的内容通过form表单,传给controller,增加新闻。

/**
* 增加新闻
*/
public function actionAddNews2(){
$news=new News;
$content=$_POST['content'];
$title=$_POST['title'];
$writer=$_POST['writer'];
$news->title=$title;
$news->content=$content; 
$news->writer=$writer;
$news->save();
$this->redirect(array(getNews));
// var_dump($news);
}

 

 

简单页面展示:

yii框架之增删改查(一)_第10张图片

5.修改新闻

修改

将要修改的新闻的id传给controller,将id对应的新闻在页面呈现出来,进行修改。

    /**
     * 跳转到更新新闻
     */
    public function actionToUpdateNews(){
        $id=$_GET['id'];
        $news=News::model()->find('id=:id',array(':id'=>$id));
        $this->smarty->assign('news',$news);
        $this->smarty->display('news/update_news.html');
    }

修改新闻页面:

标题
内容
作者
/** * 修改新闻 */ public function actionGetUpdateNews(){ $id=$_POST['id']; $news=News::model()->find('id=:id',array(':id'=>$id)); $news->title=$_POST['title']; $news->content=$_POST['content']; $news->writer=$_POST['writer']; $news->save(); // 将更改保存到数据库 $this->redirect(array(getNews)); }

简单页面展示:

yii框架之增删改查(一)_第11张图片

 

 

Yii 权威指南(使用数据库)http://www.yiichina.com/doc/guide/1.1/database.ar

你可能感兴趣的:(语言学习)