【发布时间】:2011-01-31 15:46:52
【问题描述】:
我的一个客户要发布一个新产品,负责编码的开发人员离开了项目(完成了 85%)。
需要使用 Propel ORM 执行自定义 SQL 查询。查询如下:
$sql = "SELECT
`domain`.*,
`domain_registrar`.`name` AS `registrar_name`,
`domain_account`.`id` AS `account_id`,
`domain_account`.`username` AS `account_username`,
DATEDIFF(`domain`.`expire_date`, NOW()) AS `days_to_expiration`
FROM
`domain`
LEFT JOIN `domain_account` ON `domain_account`.`id`=`domain`.`domain_account_id`
LEFT JOIN `domain_registrar` ON `domain_registrar`.`id`=`domain_account`.`domain_registrar_id`
ORDER BY
`days_to_expiration`,
`domain_registrar`.`name`,
`domain_account`.`username`,
`domain`.`domain`";
我对推进 ORM 有非常基本的了解,所以我认为任何专家都可以帮助我解决它。 db方案如下:
<table name="domains" phpName="Domains">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="account_id" type="INTEGER" required="true" />
<column name="domain" type="VARCHAR" size="255" required="true" />
<column name="expiration" type="DATE" />
<foreign-key foreignTable="domain_accounts" phpName="DomainAccounts" refPhpName="Domains">
<reference local="account_id" foreign="id" />
</foreign-key>
</table>
<table name="domain_accounts" phpName="DomainAccounts">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="registrar_id" type="INTEGER" required="true" />
<column name="username" type="VARCHAR" size="255" required="true" />
<column name="password" type="VARCHAR" size="255" required="true" />
<foreign-key foreignTable="domain_registrars" phpName="DomainRegistrars" refPhpName="DomainAccounts">
<reference local="registrar_id" foreign="id" />
</foreign-key>
</table>
<table name="domain_registrars" phpName="DomainRegistrars">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="value" type="VARCHAR" size="255" required="true" />
</table>
【问题讨论】:
-
这是什么版本的 Propel? Propel 1.5 引入了
Query类来扩充Peer类,这为您提供了不同的语法。 (如果您在回复中使用@Jan,我会收到通知)