gpt4 book ai didi

yii cdbcriteria : complex joins

转载 作者:行者123 更新时间:2023-12-02 07:06:34 26 4
gpt4 key购买 nike

我最近开始了一个使用 Yii 的项目,我正在努力适应查询生成器。现在,我想使用连接进行查询并在查询中访问连接表的数据,但我无法使以下内容正常工作:

我的(简化的)数据库表:

客户(#id,姓名)
员工(#id,姓名)
customer_employee(#customerid,#employeeid)
会计(#id, customerid, started_date, finished_date, month, year)

  • 客户和员工之间的多对多关系
  • 客户与会计之间的一对多关系

我想执行以下查询,它会选择与特定员工关联的所有客户并显示他们的会计状态(开始日期和结束日期)(如果适用)(否则为空)。

下面的查询工作得很好,只是我不能让它与 cdbcriteria 和 Yii 查询构建器一起工作:(另外,硬编码的 id 只是为了这个例子)

SELECT name, started_date, finished_date
FROM customer
RIGHT JOIN customer_employee ON customer.id=customer_employee.customerid
LEFT JOIN accounting ON customer.id=accounting.customerid
WHERE customer_employee.employeeid=2';

请帮忙!

最佳答案

1.创建命令

Yii::app()->db->createCommand()
->select('name, started_date, finished_date')
->from('customer c')
->rightJoin('customer_employee ce', 'c.id=ce.customerid')
->leftJoin('accounting a', 'c.id=a.customerid')
->where('ce.employeeid=:id', array(':id'=>2))
->queryRow();

2。Cdb标准

$criteria = new CDbCriteria;
$criteria->select = 'name, started_date, finished_date';
$criteria->join = 'RIGHT JOIN customer_employee ON customer.id=customer_employee.customerid ';
$criteria->join .= 'LEFT JOIN accounting ON customer.id=accounting.customerid';
$criteria->condition = 'customer_employee.employeeid=:id';
$criteria->params = array(':id'=>2);

$customers = Customers::model()->find($criteria);

*。不要忘记规则:http://www.yiiframework.com/doc/guide/1.1/en/database.arr

我没有测试您的 SQL,但如果对您有用,这些应该也适用于 Yii。

关于yii cdbcriteria : complex joins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015311/

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