【问题标题】:Passing route arguments to CakePHP controllers将路由参数传递给 CakePHP 控制器
【发布时间】:2015-04-20 16:42:19
【问题描述】:

我有一个 CakePHP 3.0 设置。我已经设置了一个自定义路由来将 SKU 传递给控制器​​,但无论我做什么,它都不会正确地将传递的参数插入到 SQL 中。

我的路线如下:

$routes->connect('products/:sku', ['controller' => 'Products', 'action' => 'sku'], ['pass' => ['sku']]);

我可以通过记录控制器操作找到参数 $sku。但正如您所见,在 SQL 中,sku 以 :c0 的形式传递。 (顺便说一句,我将 'samsung-galaxy-s3' 作为 SKU 传递)。

SELECT `Products`.`id`
    AS `Products__id`, `Products`.`attribute_group_id` AS `Products__attribute_group_id`, `Products`.`order`
    AS `Products__order`, `Products`.`alias` AS `Products__alias`, `Products`.`stock`
    AS `Products__stock`, `Products`.`sku` AS `Products__sku`, `Products`.`price` AS `Products__price`, `Products`.`tax_id`
    AS `Products__tax_id`, `Products`.`weight`
    AS `Products__weight`, `Products`.`active`
    AS `Products__active`, `Products`.`created`
    AS `Products__created`, `Products`.`modified`
    AS `Products__modified`, `AttributeGroups`.`id`
    AS `AttributeGroups__id`, `AttributeGroups`.`name`
    AS `AttributeGroups__name`, `Taxes`.`id` AS `Taxes__id`, `Taxes`.`is_default`
    AS `Taxes__is_default`, `Taxes`.`name`
    AS `Taxes__name`
  FROM `products` `Products` INNER JOIN `attribute_groups` `AttributeGroups`
    ON `AttributeGroups`.`id` = (`Products`.`attribute_group_id`)
 INNER JOIN `taxes` `Taxes` ON `Taxes`.`id` = (`Products`.`tax_id`)
 WHERE `Products`.`sku` = :c0

【问题讨论】:

  • :c0 是值绑定的占位符。如果正在执行的查询确实有问题,请添加更多详细信息,例如您的控制器代码和实际执行的查询(检查DebugKit)。
  • 你能把你的查询代码贴在这里,我可以简单解释一下...

标签: php mysql cakephp cakephp-3.0


【解决方案1】:

正如 cmets 中的某个人已经说过的,您正在查看参数化查询,而不是将对数据库执行的最终查询。请查看您的 DebugKit 面板以了解最终执行的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-16
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2020-01-30
    • 2015-08-18
    相关资源
    最近更新 更多