Symfony1 在Symfony/spreep中运行视图查询
我在Symfony 1.4/1.4中有一个现有项目 出于数据库优化的目的,我创建了几个表的视图。功能/视图查询如下: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
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中显示任何这样的方法。