gpt4 book ai didi

php - Zend框架2 : How to write custom query using tablegateway

转载 作者:行者123 更新时间:2023-11-30 00:08:52 24 4
gpt4 key购买 nike

我需要在使用表网关的模型中编写更新查询。更新查询sql如下。

UPDATE `config_settings` SET `CS_value` = CASE `CS_option`
WHEN 'CATEGORY_BANNER_MIN_WIDTH' THEN '$data->CATEGORY_BANNER_MIN_WIDTH'
WHEN 'CATEGORY_BANNER_MAX_WIDTH' THEN '$data->CATEGORY_BANNER_MAX_WIDTH'
WHEN 'CATEGORY_PROMOTION_MIN_WIDTH' THEN '$data->CATEGORY_PROMOTION_MIN_WIDTH'
WHEN 'CATEGORY_PROMOTION_MAX_WIDTH' THEN '$data->CATEGORY_PROMOTION_MAX_WIDTH'
WHEN 'PRODUCT_LARGE_IMAGE_WIDTH' THEN '$data->PRODUCT_LARGE_IMAGE_WIDTH'
WHEN 'PRODUCT_MEDIUM_IMAGE_WIDTH' THEN '$data->PRODUCT_MEDIUM_IMAGE_WIDTH'
WHEN 'PRODUCT_SMALL_IMAGE_WIDTH' THEN '$data->PRODUCT_SMALL_IMAGE_WIDTH'
ELSE `CS_value`
END;

我不知道如何实现这个。 TableGateway的更新方法只接受表字段名称及其值的数组。那么这个查询该怎么写呢。

我知道我可以使用数据库适配器原始 SQL 查询执行此查询,但我不想要这个。除此之外,有时我们需要在tablegateway的select方法中进行一些自定义查询。但我在tablegateway中没有找到稳定的方法。

例如:

select sum(CASE WHEN answers.type = 'his' THEN 1 ELSE 3 END) AS totalScore  
FROM users_questions_answers join answers on cast(answers.id as int(8))=
users_questions_answers.answer_id group by users_questions_answers.user_id

在这种情况下我该如何继续。任何 zend 2 专家的建议将受到高度赞赏。感谢您的善意考虑。

最佳答案

试试这个 -

$this->tablegateway->update(array('CS_value' => new \Zend\Db\Sql\Expression('CASE CS_option
WHEN "CATEGORY_BANNER_MIN_WIDTH" THEN ?
WHEN "CATEGORY_BANNER_MAX_WIDTH" THEN ?
WHEN "CATEGORY_PROMOTION_MIN_WIDTH" THEN ?
WHEN "CATEGORY_PROMOTION_MAX_WIDTH" THEN ?
WHEN "PRODUCT_LARGE_IMAGE_WIDTH" THEN ?
WHEN "PRODUCT_MEDIUM_IMAGE_WIDTH" THEN ?
WHEN "PRODUCT_SMALL_IMAGE_WIDTH" THEN ?
ELSE CS_value END',
array($data->CATEGORY_BANNER_MIN_WIDTH, $data->CATEGORY_BANNER_MAX_WIDTH, $data->CATEGORY_PROMOTION_MIN_WIDTH, $data->CATEGORY_PROMOTION_MAX_WIDTH, $data->PRODUCT_LARGE_IMAGE_WIDTH, $data->PRODUCT_MEDIUM_IMAGE_WIDTH, $data->PRODUCT_SMALL_IMAGE_WIDTH))));

如果查询中使用的CATEGORY_BANNER_MIN_WIDTH是一些常量,那么只需删除它周围的双引号即可。

我尝试了与上述查询类似的查询,效果很好。

关于php - Zend框架2 : How to write custom query using tablegateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260714/

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