gpt4 book ai didi

php - 使用连接将一行向上移动到 Propel 的顶部

转载 作者:行者123 更新时间:2023-11-30 21:52:35 26 4
gpt4 key购买 nike

我有这样的疑问

$packages = PackageQuery::create()
->joinPackageHasTable()
->addAscendingOrderByColumn(' CASE name
WHEN package.package_id=3 THEN 0
ELSE - 1
END')
->groupByName()
->find();

我试图实现的是将此查询和 id 等于 3 的转发行保持在顶部。此查询不起作用并返回

Criteria:(Error: Cannot fetch TableMap for undefined table: CASE name WHEN package.)

表包同时存在于数据库和模式中

最佳答案

您不能使用 propel 以这种方式订购。您首先必须选择要使用别名订购的任何内容,然后才能订购。 addAscendingOrderByColumn 将检查所请求的列是否为 propel 所知,并且自定义 sql 未被识别。


例如,在我自己的项目中我使用了如下代码:

        $query->withColumn(
'ISNULL(' . BlaBlaTableMap::COL_MIN_LEFT . ')',
'not_unlimited'
);
$query->orderBy('not_unlimited');

在你的情况下,我认为这样的事情会起作用:

        $packages = PackageQuery::create()
->withColumn(
sprintf(
'CASE WHEN %s = 3 THEN -1 ELSE 0 END',
PackageHasTableTableMap::COL_PACKAGE_ID
),
'is_not_three'
)
->orderBy('is_not_three')
->usePackageHasTableQuery()
->endUse()
->groupByName()
->find();

关于php - 使用连接将一行向上移动到 Propel 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com