我有一个运行良好的选择输入字段,但有些用户不在此列表中,尽管数据库看起来不错并且我没有条件。我将选项文本与 $virtualFields 看起来像$virtualFields = array( 'full_name_withTitle' => 'CONCAT(lastname, " ", firstname, " (", title, ")")'
尽管我有括号中的标题,但当没有值时,没有值的空行至少应该有“()”。
该字段如下所示:
任何提示
endo
我有一个运行良好的选择输入字段,但有些用户不在此列表中,尽管数据库看起来不错并且我没有条件。我将选项文本与 $virtualFields 看起来像$virtualFields = array( 'full_name_withTitle' => 'CONCAT(lastname, " ", firstname, " (", title, ")")'
尽管我有括号中的标题,但当没有值时,没有值的空行至少应该有“()”。
该字段如下所示:
任何提示
endo
您应该在定义 virtualFields 时使用以下代码:
$virtualFields = array( 'full_name_withTitle' => 'CONCAT(IF(lastname IS NULL '', lastname), " ", IF(firstname IS NULL, '', firstname), " (", IF(title IS NULL, '', title), ")")'
这个链接会帮助你。
尽管我有括号中的标题,但当没有值时,没有值的空行至少应该有“()”
否。如果一个参数为 null,则 CONCAT 返回 null。
连接文档:
如果任何参数为 NULL,则 CONCAT() 返回 NULL。
另一种可能性是你有字符编码问题,也许你的数据库字段有非 UTF8 编码的字符串,但 PHP/CakePHP 需要 UTF8。具体来说(或它包装htmlspecialchars()
的 Cake's ),如果发现无效字符,它将默默地输出一个空字符串。h()
修复此类问题有时会很棘手,因为字符编码不可见。如果整个数据库很小且非 UTF8,有时最简单的方法是将数据库转储为 SQL,使用编辑器或命令行工具进行转换,然后重新导入数据库。一些快速搜索发现了一些关于该主题的可能 有用的帖子。