如何基于视图进行查询?

How to make a query based on a view?

对数据库 table 进行查询的标准方法是创建一个 model 并在其中创建一个函数,例如:

<?php

use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Query;

class Client extends Model {

    function lireParCritere($critere) {

        $sSQL = "
                SELECT c.clt_id as clt_id,c.clt_cin_pass,c.clt_nom,c.clt_prenom,c.clt_tel,
                c.clt_adresse,c.clt_comment,CONCAT_WS(
                                                        ' ',
                                                        c.clt_nom,
                                                        c.clt_prenom
                                                    ) AS noms 
                FROM Client as c WHERE 1 = 1 ";

        if(isset($critere["clt_id"]) && $critere["clt_id"] != "") {
            $sSQL .= "AND c.clt_id = '" . $critere["clt_id"] . "' ";    
        }

        $sSQL .= " ORDER BY noms";

        $query = new Query($sSQL,$this->getDI());

        $ret = $query->execute();

        return $ret;

    }
}

?>

查询数据库的方法是什么view

数据库视图基本上是存储在另一个 table 中的 SQL 查询的输出。您可以将视图视为特定 SQL 查询的别名,然后您可以在其上 运行 其他查询。 (有点像 SELECT * FROM (SELECT * FROM table_one, table_two, table_n);

这意味着您可以将视图视为常规视图 table 并毫无问题地从中提取。

假设您有一个包含三列 idcol_onecol_two 的数据库视图。您可以执行与以下类似的操作。

<?php

/**
 * Model representing the database view
 */
class Example extends \Phalcon\Mvc\Model
{

    public $id;

    public $col_one;

    public $col_two;

    public function getSource()
    {
        return 'view_name_in_database';
    }

    public function columnMap()
    {
        return array(
            'id' => 'id',
            'col_one' => 'col_one',
            'col_two' => 'col_two'
        );
    }

}

// example query on the model
$examples = Example::query()
    ->where('id = :id:')
    ->bind(array(
        'id' => 55
    ))->execute();

?>