将路由参数传递给CakePHP控制器

时间:2015-04-20 16:42:19

标签: php mysql cakephp cakephp-3.0

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

我的路线如下:

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

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

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

1 个答案:

答案 0 :(得分:1)

正如评论中已有人所说,您正在查看参数化查询,而不是将要执行到数据库的最终查询。请查看DebugKit面板以获取最终执行的查询。