我需要在xml字段内编写mysql查询。Joomla为我提供了这种格式,它对大多数事情来说相对简单。除了我可以实际编写一个查询,检查属性列中的json值。
下面只是我的例子,我知道它不会工作。但这就是我想做的。
SELECT *
FROM com_content
WHERE atrribs(form_show) = 1
下面还有属性列所保存的json格式
{
"form_show":"1",
"form_avilable":"0",
"mycategory":"4",
"response":"Thank you!",
"forms":{
"fieldinstruction":["blah","blah"],
"fieldmanditory":["0","0"]
}
}
注意:这是joomla解释的格式。摘自joomla docs
docs.joomla.org/SQL_form_field_type
<field
name="myfield"
type="sql"
default="10"
label="Select an article"
query="SELECT id, title FROM #__content"
key_field="id"
value_field="title"
/>
还可以在SQL语句中组装或计算字段。例如,假设您希望将每篇文章的创建日期/时间附加到列表中的文章标题。然后可以使用以下SQL语句:
SELECT id, concat( title, ' (', created, ')') AS title
FROM #__content
我需要做的是使用上述格式写一个mysql查询,但它需要从一列内获得一个值,它也是一个json。
提前感谢大家
不能,这正是在DB中存储JSON字符串应该谨慎处理的原因。也就是说,您使用的示例列都不是以JSON格式存储在Joomla的内容表中。这些值是你想要的吗?
您唯一的选择是在PHP中解析返回的结果集以执行任何进一步的过滤。根据您的最终目标,您可能能够将PHP逻辑插入到MVC路径模型或表类中以处理任何过滤。您是在编写自定义组件还是实现布局覆盖?
您可以尝试查询
$mystring = '%'.'"form_show":"1"' . '%';
$query->where($db->quoteName('attrib') .' LIKE '. $db->quote($mystring) );
(固定)