0

うまく機能する選択入力フィールドがありますが、一部のユーザーはこのリストに含まれていませんが、データベースは良好に見え、条件はありません。オプションテキストを次のような $virtualFields と組み合わせます$virtualFields = array( 'full_name_withTitle' => 'CONCAT(lastname, " ", firstname, " (", title, ")")'

角かっこでタイトルを付けていますが、値がない場合、値のない空の行には少なくとも「()」が必要です。

フィールドは次のようになります。

行が欠落している入力フィールドを選択

評価されたヒント

endo
4

3 に答える 3

1

virtualFields を定義するときは、次のコードを使用する必要があります。

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

このリンクが役立ちます。

于 2012-07-25T04:53:24.917 に答える
1

角かっこでタイトルを付けていますが、値がない場合、値のない空の行には少なくとも「()」が必要です

いいえ。いずれかの引数が null の場合、CONCAT は null を返します。

CONCAT doc :

いずれかの引数が NULL の場合、CONCAT() は NULL を返します。

于 2012-07-24T15:50:56.990 に答える
0

もう 1 つの可能性は、文字エンコーディングに問題があることです。おそらく、データベース フィールドには非 UTF8 でエンコードされた文字列が含まれていますが、PHP/CakePHP は UTF8 を想定しています。具体的には(またはそれがラップするhtmlspecialchars()Cake の)、無効な文字が見つかった場合、空の文字列を黙って出力します。h()

文字エンコーディングの可視性がないため、この種の問題を修正するのは難しい場合があります。データベース全体が小さく、非 UTF8 である場合、最も簡単な方法は、データベースを SQL としてダンプし、エディターまたはコマンド ライン ツールを使用して変換し、データベースを再インポートすることです。いくつかの簡単な検索により、トピックに関するいくつかの有用な投稿が見つかり ました。

于 2012-07-24T17:21:10.677 に答える