cakephp中的外部sql查询

cakephp中的外部sql查询,cakephp,Cakephp,我在cakephp中的sql查询代码中遇到了问题 下面是我在RankingsController.php中的代码 <?php class RankingsController extends AppController { public $helpers = array('Html', 'Form', 'Session'); public $components = array('Session'); public function index() {

我在cakephp中的sql查询代码中遇到了问题

下面是我在RankingsController.php中的代码

<?php
class RankingsController extends AppController {
    public $helpers = array('Html', 'Form', 'Session');
    public $components = array('Session');


    public function index() {

    $this->Ranking->virtualFields += array(
    'totalpoints' => 0);    

    $rankings = $this->Ranking->query("
    select turnierranks.teilnehmer_id as teilnehmer_id, 
    teilnehmers.nachname, teilnehmers.vorname,
    sum(pointtab.points) as totalpoints
    from turnierranks, pointtab, turniers, teilnehmers 
    where 
    turnierranks.turnier_id = turniers.id and
    turniers.turnierkategorie = pointtab.kategorie and
    turnierranks.rank     = pointtab.rank and
    teilnehmers.id = teilnehmer_id
    group by teilnehmer_id, teilnehmers.nachname, teilnehmers.nachname
    order by totalpoints desc");

      debug($rankings); 

    }
 }

在Model ranking.php中

<?php
class Ranking extends AppModel {
 public $useTable = false; 
}

要将变量从控制器传递到视图,需要设置一个
viewVar

在您的示例中:

$rankings = ..........


$this->set('rankings', $rankings);
$this->set('FooBar', $rankings);
第一个参数是要创建/设置的viewVar的名称,例如:

$rankings = ..........


$this->set('rankings', $rankings);
$this->set('FooBar', $rankings);
将创建一个viewVar“FooBar”,其中包含$rankings的内容,该内容将通过变量
$FooBar

请参阅文档中的本章

自定义查询/原始SQL 这不是问题的一部分,但是,您似乎正在编写自己的SQL语句来检索数据。这不仅允许代码中存在潜在的SQL漏洞,还可以跳过CakePHP模型的大部分功能

以“正确”的方式使用CakePHP模型,将减少所需的代码量,并在SQL注入等情况下适当地保护您

请阅读文档中有关模型的章节


要将变量从控制器传递到视图,需要设置一个
viewVar

在您的示例中:

$rankings = ..........


$this->set('rankings', $rankings);
$this->set('FooBar', $rankings);
第一个参数是要创建/设置的viewVar的名称,例如:

$rankings = ..........


$this->set('rankings', $rankings);
$this->set('FooBar', $rankings);
将创建一个viewVar“FooBar”,其中包含$rankings的内容,该内容将通过变量
$FooBar

请参阅文档中的本章

自定义查询/原始SQL 这不是问题的一部分,但是,您似乎正在编写自己的SQL语句来检索数据。这不仅允许代码中存在潜在的SQL漏洞,还可以跳过CakePHP模型的大部分功能

以“正确”的方式使用CakePHP模型,将减少所需的代码量,并在SQL注入等情况下适当地保护您

请阅读文档中有关模型的章节


谢谢,它很有效-我只在cakephp上工作了2天,我必须说它是一个可爱的工作框架。我以前在assembler(8080)dBase、Clipper、C、sybase PowerBuilder和Programed ColdFusion中学习过。如果这是一个新项目,并且您能够更改数据库模式,那么花时间根据名称命名表和字段是值得的。遵循约定时,CakePHP将自动“发现”用于在数据库表之间建立关系的正确列。这将为您省去很多麻烦,并在旁注上进行配置/设置;控制器将自动“继承”AppController中设置的帮助程序和组件,因此您不必在每个控制器中配置它们,只需指定AppController中未设置的组件即可。由于CakePHP 2.3,大多数帮助程序根本不需要指定,CakePHP在需要时使用自动加载来加载它们,这是一个实时保护程序。我希望我的信息有用。请通过接受我的回答来标记您的问题“已回答”。谢谢,它有效-我只在cakephp工作了2天,我必须说它是一个可爱的工作框架。我以前在assembler(8080)dBase、Clipper、C、sybase PowerBuilder和Programed ColdFusion中学习过。如果这是一个新项目,并且您能够更改数据库模式,那么花时间根据名称命名表和字段是值得的。遵循约定时,CakePHP将自动“发现”用于在数据库表之间建立关系的正确列。这将为您省去很多麻烦,并在旁注上进行配置/设置;控制器将自动“继承”AppController中设置的帮助程序和组件,因此您不必在每个控制器中配置它们,只需指定AppController中未设置的组件即可。由于CakePHP 2.3,大多数帮助程序根本不需要指定,CakePHP在需要时使用自动加载来加载它们,这是一个实时保护程序。我希望我的信息有用。请接受我的回答,将您的问题标记为“已回答”。