cakephp3从其他型号中选择count(*)

时间:2016-02-01 12:22:58

标签: mysql count cakephp-3.0

我有3个模型Employees CustomersPartners

我想在employees模型的customers视图中显示所有表partners dashboardEmployees的计数。

EmployeesController.php

<?php

namespace App\Controller;

class EmployeesController extends AppController
{
    public function dashboard()
    {

    }

}
?>

我是cakephp的新手,我根本不知道如何查询其他模型表。

请指出我的好教程或文档。这会很有帮助

2 个答案:

答案 0 :(得分:1)

我使用以下代码修复它。

// Controller
$this->loadModel("Customer");
$query = $this->Customers->find('all', [
    'conditions' => ['Customers.area_cd =' => $this->Auth->user('area_cd')]
]);
$entity_count[0] = $query->count();
$this->loadModel("Employee");
$query = $this->Employees->find('all', [
    'conditions' => ['Employees.area_cd =' => $this->Auth->user('area_cd')]
]);
$entity_count[1] = $query->count();
$this->loadModel("Partner");
$query = $this->Partners->find('all', [
    'conditions' => ['Partners.area_cd =' => $this->Auth->user('area_cd')]
]);
$entity_count[2] = $query->count();

$this->set(compact('entity_count'));

// View
<?= $entity_count[0] ?>

答案 1 :(得分:0)

要使用的查询是嵌套查询,分配给数组。然后您可以从那里访问值。

特别是,您可能希望编写类似的内容:

$result = List();
$result->query('SELECT COUNT(SELECT * FROM usertable), COUNT(SELECT * FROM partnertable), COUNT(SELECT * FROM customertable)');

要访问这些值,您可以根据数组中的位置引用$result,即。 $result[0]将是第一个值,$result[1]是第二个值,依此类推。

如果您需要指定计数的项目(例如活动用户,活跃客户等),请在计数表达式中的select语句中添加where子句

EG。 SELECT * FROM usertable WHERE active="yes"

获得所需数据后,您可以编辑要求显示的源文件,并使用php echo将其放置到html流中