2012-03-22 4 views
0

私はCodeIgniterのDataMapper ORMを初めて使用しています。ここに私の質問があります。マニュアルに従って:更新データの検証データマッパーORM CodeIgniter

この方法には注意してください。 ステートメントやそれに類するメソッドを制限することなく、 テーブルのすべての単一行を変更します。

また、このメソッドは検証をバイパスし、テーブル内の外部キーでも操作できるため、リスクに注意してください。

更新方法が検証をバイパスする場合、更新前にレコードを更新する方法は何ですか?サンプルコードをいただければ幸いです。

答えて

0

DataMapper ORMは、最初にフェッチしたデータに対してのみ行うことができるため、検証できません。 UPDATEを使用すると、最終的なPHP検証関数をチェックせずにMySQLがフィールドを変更できるようになります。

ソリューションは、最初に必要なすべての行を取得し、save()機能を使用しています。 PHP側の検証が行われます。

http://datamapper.wanwizard.eu/pages/save.html

私はDataMapperののORMで少し錆びていますが、ここであなたが何をすべきかを説明する必要があります例を示します

$users = new User(); 
$users->where('age', 25)->get(); 
foreach($users as $user) 
{ 
    $user->age = 26; 
    $user->save(); 
} 
0

update()メソッドは$このため、エイリアス、より多くの何物でもありません - > db-> update()。

更新されたレコードに更新タイムスタンプを追加する必要があるかどうかを確認し、渡すフィールドが更新するテーブルに存在することを確認します。

オブジェクトを更新するには、save()を使用します。 INSERTまたはUPDATEが必要かどうかが自動的に判断されます。

+0

オブジェクトの更新にsave()を使用する場合は、アップロードタイムスタンプを設定するのか、または作成を変更するのでしょうか? – greenLizard

0

$ obj-> save();を試してみてください。 (一部の$ _POST変数に依存する)動的検証ルールを使用しており、まだ検証は行われていません。

try $ obj-> force_validation(); $ obj-> save()の前に。

関連する問題