我有一个非常基本的声明,我试图运行,我有一个问题。

$item = $this->db
            ->select("r.CustomerIDs, r.DateAdded")
            ->join("customer_orders_rewards as cor", "r.RewardID = cor.RewardID")
            ->join("customer_orders as co", "co.OrderID = cor.OrderID")
            ->where(array("r.Denomination" => $row['Denomination'], "r.RewardID" => "cor.RewardID"))
            ->get("customer_rewards as r");

在上面的语句中,它将cor.RewardID解释为一个字符串,我希望它是join中的一个字段。
它导致查询如下所示:
SELECT `r`.`CustomerID`, `r`.`DateAdded`
FROM `customer_rewards` as `r`

JOIN `customer_orders_rewards` as `cor`
ON `r`.`RewardID` = `cor`.`RewardID`

JOIN `customer_orders` as `co`
ON `co`.`OrderID` = `cor`.`OrderID`

WHERE `r`.`Denomination` = '35'
AND `r`.`RewardID` = 'cor.RewardID'  <---- Issue

如何引用join子句中WHERE中的字段?

最佳答案

一个简单的解决方法是

"r.RewardID = cor.RewardID"

而不是
"r.RewardID" => "cor.RewardID"

这样,cor.RewardID就不应该被视为字符串文字,而应该被视为实际的列。
另一方面,当r.RewardID = cor.RewardID时,您已经在连接行了,所以我要说额外的条件是多余的(有问题的条件),因此不需要它。

10-06 08:51