我需要在xml字段中编写一个mysql查询。 Joomla为我提供了格式,并且对大多数事情都相对简单。除了我可以实际编写一个检查attribs列中的json值的查询。
以下是我的例子,我知道它不会起作用。但这就是我想要做的事情。
SELECT *
FROM com_content
WHERE atrribs(form_show) = 1
下面是attribs列持有的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。
提前感谢任何人
答案 0 :(得分:1)
你不能,这正是在数据库中存储JSON字符串的原因应该谨慎对待。话虽如此,您使用的示例列都没有存储在Joomla内容表的JSON中。那些是你想要的实际价值吗?
您唯一的选择是在PHP中解析返回的结果集以进行任何进一步的过滤。根据您的最终目标,您可以将PHP逻辑插入MVC路径模型或表类以处理任何过滤。您在编写自定义组件还是实现布局覆盖?
答案 1 :(得分:0)
您可以尝试查询
$mystring = '%'.'"form_show":"1"' . '%';
$query->where($db->quoteName('attrib') .' LIKE '. $db->quote($mystring) );
(修正了这个)