2016-04-01 28 views
1

フォームには、 "first_name"というような必須フィールドと必須フィールドはありません。このフィールドを空のままにしておくと、「Column 'first_name'はnullにできません」というエラーが表示されます。しかし、Doctrineは空文字列をNULLに変換するのはなぜですか?Doctrine/Symfonyは、空の文字列をNULLに変換します。

しかし、私はこれに関する質問を持っている:

  1. は、それを無効にすることができ、このですか?

  2. あなたの意見は?今まで私は、フォームフィールドが空のときに空の文字列を挿入したという事実に慣れていました。 NULLではないo_Oしかし、誰かがこれが私たちに従うべき原則であると私に言った。しかし、私の場合、NULLは "値がありません"を意味し、 "(空文字列)は何かを意味します - "値はありますが空です "。どう思いますか?

p.s.私はMySqlを使用します。

編集:

同様の質問があります:

Symfony2 forms interpret blank strings as nullsは多分2016のような新しいソリューションはありますか?

仕事が受け入れ答えから1である唯一の解決策:設定し、あなたが期待する値を設定 空かどう

それとも機能を持っているときotherway setRecapあなたは確認することができます。

public function setRecap($recap) { 
    if(!isset($recap)) { 
    $this->recap = '' 
    } else { 
    $this->recap = $recap; 
    } 
} 

しかし、簡単な解決策が必要、私はこのようなフィールドの多くを持って、これは私には行き過ぎのようです。

p.s.私はThomas Decauxの回答を受け入れられた答えの下で試しませんでした。なぜなら、それは私にはハッキーなようです。エンティティで

public function setUserName($userName) { 
    $this->userName = (string)$userName; 
    return $this; 
} 

:誰かが私を提案したよう

答えて

1

まあ、それは同じくらい簡単です。

編集:

$userName = ''; 
1

率直に言って、それはあなたのDBであなたの最初の名のNULL値を許可するのがベストでしょう:プラス、私たちは次のように、変数のデフォルト値を与える必要があります。あなたがしたことをやって、物事をもっと複雑にするだけです。

symfonyは専門家によって開発されました。空の文字列はNULLよりも面白くないので、変換は妥当と思われます。

上記のように、NULLと空の文字列は2つの異なるものですが、ある意味では真ですが、空の名前(空文字列)はどういう意味ですか?この男には知られていないファーストネーム(つまりNULL)があると言ってもらえませんか?

EDIT:あなたの最初のコメントに応えて

:その場合はまあ

文字列への型キャストは正しいアプローチです。

+1

このビューは少なくとも議論の余地があります。たとえば、次のようにdb内でNULLを使用することに対する強い思いがあります。http://www.databasedesign-resource.com/null-values-in-a-database.html他の例も見つけることができます。 –

+0

@Zephyrこれは良い例ではありませんでしたが、「私たちはこの情報を持っていますが、空です」とは対照的に「この情報はありません」== NULLと言いたいことがあります。 ''(空文字列)。しかし、+1は "ファーストネーム"の場合は100%正しいですから+1してください。たとえば、Flat 104/B 24、Roberts Streetのような住所がNULLのような場合は、誰かがフラットに住んでいますが、もしそうでなければ家の番号しかありません。そして、私はフラットな列を空の文字列(この情報があります)にし、NULLではないことを望みます。これはいつも「私たちはこの情報を持っていません」ということです。 –

+1

@ElzoValugi:リンクありがとう! –

関連する問題