首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PROPEL --将sql查询传输到propel

PROPEL --将sql查询传输到propel
EN

Stack Overflow用户
提问于 2014-02-20 11:43:31
回答 2查看 492关注 0票数 0

我在将我的sql查询转换为推进查询时遇到了问题。

这个查询看起来像(我之前已经问过这个查询:Changing a sql query using join instead of a subselect )

代码语言:javascript
复制
SELECT cr.* 
FROM confirmation_requests cr
LEFT JOIN confirmations c ON (cr.id = c.confirmation_request_id AND c.device_id = 1)
WHERE c.id IS NULL;

因此,我尝试将这个查询转移到propel,如下所示:

代码语言:javascript
复制
$confirmationRequests = ConfirmationRequestQuery::create()
                    ->leftJoin("Confirmation c")
                        ->addJoinCondition("c","c.device_id = ?",$device->getId())
                    ->where("c.id IS NULL")
                    ->find();

但不起作用。

来自此推进查询的sql查询:

代码语言:javascript
复制
SELECT confirmation_requests.id, 
    confirmation_requests.customer_id, 
    confirmation_requests.confirmation_type_id, 
    confirmation_requests.file_path, 
    confirmation_requests.user_id, 
    confirmation_requests.state, 
    confirmation_requests.created_at, 
    confirmation_requests.updated_at 
FROM `confirmation_requests` 
CROSS JOIN `confirmations` LEFT JOIN `confirmations` `c` ON (confirmation_requests.id=c.confirmation_request_id AND confirmations.user_id = 10) 
WHERE confirmations.id IS NULL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-17 12:24:03

Propel喜欢在Schema文件中定义表关系,因此,从模式文件开始并创建外键关系(根据数据中存在的关系类型添加选项):

代码语言:javascript
复制
<table name='confirmation_request' ...
  <column name='id' ....
  ...
</table>

<table name='confirmation' ...
  ...
  <column name='cr_id' ...
  <foreign-key foreignTable='confirmation_request' ...
    <reference local='cr_id' foreign='id' ...
  </foreign-key>
  ...
</table>

然后,您可以编写如下查询:

代码语言:javascript
复制
$crs = ConfirmationRequestQuery::create()
        ->join('ConfirmationRequest.Confirmation')
        ->where('Confirmation.UserId = 10')    // Add other conditions as required
        ->where('Confirmation.DeviceId = ?', $define->getId())
        ->where('Confirmation.Id IS NULL')
        ->find();
票数 0
EN

Stack Overflow用户

发布于 2014-04-09 12:18:17

Propel总是给您编写SQL代码的后盾,参见http://propelorm.org/blog/2011/02/02/how-can-i-write-this-query-using-an-orm-.html中的答案#2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21906767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档