教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 YII 操作数据库的三种方式

YII 操作数据库的三种方式

发布时间:2023-05-10   编辑:jiaochengji.com
教程集为您提供YII 操作数据库的三种方式等资源,欢迎您收藏本站,我们将为您提供最新的YII 操作数据库的三种方式资源
下面给大家介绍一个简单的YII 操作数据库的三种方式,一个就明白 了。

Getting data from a database
Most applications today use databases. Be it a small website or a social network, at least some parts are powered by databases. Yii introduces three ways which allow you to work with databases:
Active Record
Query builder
SQL via DAO

 代码如下 复制代码
<?php
class DbController extends Controller
{
    protected function afterAction($action)
    {
        $time = sprintf('%0.5f', Yii::getLogger()->getExecutionTime());
        $memory = round(memory_get_peak_usage()/(1024*1024),2)."MB";
        echo "Time: $time, memory: $memory";
        parent::afterAction($action);
    }
 
    public function actionAr()
    {
        $actors = Actor::model()->findAll(array('with' => 'films',
                'order' => 't.first_name, t.last_name, films.title'));
        echo '<ol>';
        foreach($actors as $actor)
        {
            echo '<li>';
            echo $actor->first_name.' '.$actor->last_name;
            echo '<ol>';
            foreach($actor->films as $film)
            {
                echo '<li>';
                echo $film->title;
                echo '</li>';
            }
            echo '</ol>';
            echo '</li>';
        }
        echo '</ol>';
    }
 
    public function actionQueryBuilder()
    {
        $rows = Yii::app()->db->createCommand()
                ->from('actor')
                ->join('film_actor', 'actor.actor_id=film_actor.actor_id')
                ->leftJoin('film', 'film.film_id=film_actor.film_id')
                ->order('actor.first_name, actor.last_name, film.title')
                ->queryAll();
        $this->renderRows($rows);
    }
 
    public function actionSql()
    {
        $sql = "SELECT * FROM actor a
             JOIN film_actor fa ON fa.actor_id = a.actor_id
             JOIN film f ON fa.film_id = f.film_id
             ORDER BY a.first_name, a.last_name, f.title";
        $rows = Yii::app()->db->createCommand($sql)->queryAll();
        $this->renderRows($rows);
    }
 
    public function renderRows($rows)
    {
        $lastActorName = null;
        echo '<ol>';
        foreach($rows as $row)
        {
            $actorName = $row['first_name'].' '.$row['last_name'];
            if($actorName!=$lastActorName){
                if($lastActorName!==null){
                    echo '</ol>';
                    echo '</li>';
                }
                $lastActorName = $actorName;
                echo '<li>';
                echo $actorName;
                echo '<ol>';
            }
            echo '<li>';
            echo $row['title'];
            echo '</li>';
        }
        echo '</ol>';
    }
}

您可能感兴趣的文章:

[关闭]
~ ~