gpt4 book ai didi

php - 如何使用 NULL-safe 等于 mysql operator with idiorm & paris

转载 作者:行者123 更新时间:2023-11-29 02:45:49 25 4
gpt4 key购买 nike

我想用 idiorm & paris 数据库工具包 ( http://j4mie.github.io/idiormandparis/ ) 提出这个请求:

SELECT mqtt_table.* FROM `shelf_mqtt_confirmation_message` `mqtt_table` WHERE NOT( `confirm_result` <=> 'positive')

我尝试过:

$orm->where_not_equal("confirm_result","positive");

但这等同于:

SELECT mqtt_table.* FROM `shelf_mqtt_confirmation_message` `mqtt_table` WHERE NOT( `confirm_result` = 'positive')

这排除了 confirm_result 为 NULL 的所有情况:但我也想保留这些行。问题在于,在 MySQL 中,如果要比较的元素之一为 NULL 而不是返回 0,则 = 比较运算符返回 NULL。(当 <=> 执行类似于 = 运算符的相等比较时,但如果两个操作数均为 NULL,则返回 1 而不是 NULL , 如果一个操作数为 NULL,则为 0 而不是 NULL)

所以我的问题是,运算符 <=> 是否存在于 idiorm & paris 中?除了使用 raw_query 或 where_raw 等残酷方法之外,是否有一些解决方案可以满足我想做的请求?

最佳答案

这可以通过 where_raw()docs link 来完成方法。

可以重写以下 SQL 查询

SELECT *
FROM shelf_mqtt_confirmation_message
WHERE NOT(confirm_result <=> 'positive')

在以下代码中使用成语

$messages = ORM::for_table('shelf_mqtt_confirmation_message')
->where_raw('NOT(confirm_result <=> ?)', array('positive'))
->find_many();

Parisdocs link可能是这样的

$messages = ShelfMqttConfMessage::where_raw(
'NOT(confirm_result <=> ?)', array('positive')
)
->find_many();

或者如果您改用模型工厂

$messages = Model::factory('ShelfMqttConfMessage')
->where_raw('NOT(confirm_result <=> ?)', array('positive'))
->find_many();

关于php - 如何使用 NULL-safe 等于 mysql operator with idiorm & paris,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420258/

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