2012-07-24 86 views
0

我有一个可以正常工作的select-input-field,但是有些用户不在这个列表中,虽然数据库看起来不错,但我没有条件。我结合期权文本以$ virtualFields看起来像$virtualFields = array('full_name_withTitle' => 'CONCAT(lastname, " ", firstname, " (", title, ")")'下拉菜单丢失了一些值

allthough,我在括弧没有价值的空行,至少应该有标题“()”时,有没有价值。

领域的样子:

select input field with missing lines

任何提示apreciated

endo 
+0

我们可以看到生成选项的代码吗?另外,如果它是一个'find('list')',你是否将它改为'find('all')'并调试输出以查看返回的记录? – jeremyharris 2012-07-24 14:31:15

回答

1

allthough我在括号中的标题没有价值的空行,至少应该有“() “当没有数值时

否。如果一个参数为null,则CONCAT返回null。

CONCAT doc

CONCAT()如果任何参数是NULL返回NULL。

0

另一种可能性是,你有字符编码的问题,也许你的数据库字段有非UTF8编码字符串,但是PHP/CakePHP的期待UTF8。特别是htmlspecialchars()(或Cake的h(),它包装),will silently output an empty string如果它发现无效字符。

解决这类问题有时可能会很棘手,因为字符编码没有可见性。如果整个数据库很小,并且非UTF8有时最简单的方法是将数据库转储为SQL,那么使用编辑器或命令行工具进行转换并重新导入数据库。一些快速搜索发现了一些关于该主题的文章possiblyuseful

1

,同时限定virtualFields你应该使用下面的代码:

$virtualFields = array('full_name_withTitle' => 'CONCAT(IF(lastname IS NULL '', lastname), " ", IF(firstname IS NULL, '', firstname), " (", IF(title IS NULL, '', title), ")")' 

This link会帮助你。