php - CakePHP 组和计数

标签 php mysql cakephp cakephp-3.x

我很难弄清楚这一点。

我有以下 3 个表:-

交易表

  • 身份证
  • 日期
  • 列出项目

产品表

  • ID

  • 姓名

  • 价格

产品_交易表

  • Transaction_ID

  • 产品 ID

  • 数量

因此关系如下 - 进行一笔交易,然后 products_transactions 表将它们连接在一起,因为一笔交易可以有多个产品,而一个产品可以有多个交易。 join_table 还跟踪销售量,例如,一份报纸在事务 #1 中销售,数量为 2(因此售出了 2 份报纸)。

现在,我想要创建一个 MySQL 语句来查找特定日期间隔内销售的所有产品,因此我得到如下内容:-

  • 3 张报纸
  • 12 瓶苏打水
  • 15 杯啤酒

因此,它只是计算并总结所有已售出的产品。

我已经认真尝试了一切 - 我正在使用 CakePHP,因此其中提供的解决方案会很有帮助,但即使只是简单的 SQL 来实现这一点也可能会帮助我。

到目前为止,这就是我所拥有的:-

$productTransactionsTable = TableRegistry::get('products_transactions');
    $productsTransactions = $productTransactionsTable->find('all');
    $productsTransactions->matching('transactions', function ($q) {
        return $q->where([
            'transaction_date >=' => new \DateTime('-1 week'),
            'transaction_date <=' => new \DateTime('now'),
            'device_id IN' => $this->deviceIdsInDepartment(2)
        ]);
    });
    $productsTransactions->contain(['products']);

    $productsTransactions->select([
        'count' => $productsTransactions->func()->count('quantity'),
        'name' => 'products.name'
    ]);

    $productsTransactions->groupBy('products.id');

但这只会给出 1 个结果,将所有内容一起计入 1 行,如下所示:

/src/Controller/EconomyController.php (line 665)

[ (int) 0 => 对象(Cake\ORM\Entity) {

    'count' => (int) 4504,
    'name' => 'D Morgenbrød',
    '[new]' => false,
    '[accessible]' => [
        '*' => true
    ],
    '[dirty]' => [],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'products_transactions'

}

]

感谢任何帮助!我被严重困在这里了!

谢谢!

最佳答案

我认为您正在计算销售数量和分组的总数,因此您会得到上述结果。我认为,您需要尝试以下方法:

$data = $query
    ->select([
      'name' => 'products.name',
      'quantity' => 'products.quantity',
    ])
    ->group('products.id');

关于php - CakePHP 组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314550/

相关文章:

php - 如何在没有插件且不使用@import的情况下将adobe字体添加到wordpress

php - MySQL - 用户访问被拒绝

mysql - 适合这项工作的 DBMS?

mysql - MySQL FK 的正确命名约定是什么?

python - 如何使用python从mysql表数据写入excel

cakephp - 如何在cakephp中连接条件数组

php - 使用 PHP 更改/编辑标签

PHP MYSQL 如何自动向表添加值

php - 如何正确地将数据保存到数据库?

email - CakePHP 电子邮件组件检查电子邮件是否已发送