Symfony1 在Symfony/spreep中运行视图查询

Symfony1 在Symfony/spreep中运行视图查询,symfony1,symfony-1.4,propel,Symfony1,Symfony 1.4,Propel,我在Symfony 1.4/1.4中有一个现有项目 出于数据库优化的目的,我创建了几个表的视图。功能/视图查询如下: create function getPlayer() returns INTEGER DETERMINISTIC NO SQL return @getPlayer; create view getPlay as SELECT CASE WHEN play.hiderid = getPlayer() THEN play.seekerid ELSE play.hideri

我在Symfony 1.4/1.4中有一个现有项目

出于数据库优化的目的,我创建了几个表的视图。功能/视图查询如下:

create function getPlayer() returns INTEGER DETERMINISTIC NO SQL return @getPlayer;

create view getPlay as
SELECT
    CASE WHEN play.hiderid = getPlayer() THEN play.seekerid ELSE play.hiderid END AS opponent, play . * 
    FROM odd_play play, odd_match mat
    WHERE (seekerid = getPlayer() OR hiderid = getPlayer())
    AND play.id = mat.latestplay;
在创建上述视图之后,我可以编写以下简单的SQL查询来有效地获取所需的数据

select play.*
from (select @getPlayer:=1 p) p, getPlay play;
现在的问题是,如何在Symfony/1.4中编写这个查询。有人能建议如何在1.4中编写该查询吗

在J0K评论后编辑

我正试着跟着你

class GetplayPeer extends BaseGetplayPeer {
    static public function getOpponents($player){
        $con = Propel::getConnection();
        $sql = "select play.* from (select @getPlayer:=:player p) ply, getPlay play;";
        $stmt = $con->prepare($sql);
        $stmt->bindParam(":player",&$player,PDO::PARAM_INT);
        $rs = $stmt->execute();
        //$opponents = GetplayPeer::populateObjects($rs);
        echo "opponents=<pre>";print_r($rs);exit;
    }
} // GetplayPeer
类GetplayPeer扩展了BaseGetplayPeer{ 静态公共函数(玩家){ $con=spreep::getConnection(); $sql=“select play.*从(select@getPlayer:=:player p)ply,getPlay play;”; $stmt=$con->prepare($sql); $stmt->bindParam(“:player”,和$player,PDO::PARAM_INT); $rs=$stmt->execute(); //$Operators=GetplayPeer::populateObjects($rs); echo“opposers=”;print_r($rs);退出; } }//GetplayPeer
我将
1
作为输出,这不是预期的输出。

此查询后是否需要添加对象?或者仅仅是简单的结果就可以了?@j0k在
symfony-prople:build-model
之后,我也得到了查看
getPlay
的课程。所以Getplay的对象将是最好的解决方案,但到目前为止,任何东西都可以为我工作,因为我陷入了困境。我建议你继续使用原始sql,检查这个(第一种方法)谢谢J0k,我想这对我来说是可行的。让我先让它可行,并将进一步尝试有效的优化方法。您好@j0k您确定它适用于推进1.4<代码>$con->createStatement()对我不起作用。获取连续错误。另外,我的IDE(Netbeans)没有在auto complete中显示任何这样的方法。