使用JSON_EXTRACT在WHERE子句使用Laminas-Db



我有一个mysql表的json数据类型用于存储json_encoded数据:

id|author_id|date_inserted|comments
---------------------------------------------
1|32|2022-04-01|{"id": "343","some":"data"}
2|15|2022-02-15|{"id": "24","some":"data"}
3|24|2022-05-22|{"id": "995","some":"data"}

使用laminas-db,如何在where子句中使用JSON_EXTRACT ?例如,当使用tablegateway时,我想使用以下方式更新一行的json数据:

$this->tableGateway->update($data, [JSON_EXTRACT('comments', '$.id') = 24]);

我可以通过以下方式实现:

$commentId = 24;
$where = new Where();
$where->addPredicate(new Expression('JSON_EXTRACT(comments, "$.id") = ?', $commentId));
return $this->tableGateway->update($data, $where);

最新更新