5

テーブルの特定のフィールドにデフォルトがあり、NULL が許可されていない場合、MariaDB/MySQL が通常行うように、挿入スクリプトがそれらのデフォルトを使用することが期待されます。たとえば、テーブル products に AI フィールド「id」、必須フィールド「name」、および 2 つの必須フィールド「active」と「featured」があり、どちらもデフォルトで 1 である場合、クエリは次のようになります。

INSERT INTO products (name) VALUES ('someName');

は、アクティブおよび注目の値として 1 を自動的に挿入します。ただし、Phalcon のモデルを次のように使用する場合:

$product = new Products();
$product->setName('someName');
$product->save();

「アクティブ」と「特集」が必要であるという検証エラーを返します。

Phalconツールがデフォルトをモデルクラスに収集して入力するために、モデル生成中に提供する必要があるフラグ、またはPhalconが見つかった場合にデフォルトを自動的に使用する別の方法はありますか? 最善のアプローチは、設定されていないフィールドを無視することだと思います。モデルにそれをさせることはできますか?

4

3 に答える 3

2

列のデフォルトを読み取るためのこの邪悪なメソッドが Phalcon に含まれているという点で twistedxtra の回答は魅力的だと思いますが、アーキテクチャの観点からは、データベースに依存してプロパティのデフォルトを定義するため、これは間違ったアプローチである可能性があると思います。モデル。

プロパティを宣言するときにデフォルト値を設定し、ロジックをアプリケーション層に保持します。しかし、それは私だけです。

于 2013-07-18T10:22:22.250 に答える