atk4でどのように複数テーブルの更新/削除を行うことができますか?AtK4での複数テーブルの更新/削除
答えて
あなたはモデルレベルに関連するエンティティを追加することができます。これは、あなたが常にあなたの「編集」のカスタムハンドラを作成することができますし、「削除」ボタンを使用して、アクションを実行できない場合は
https://stackoverflow.com/a/7466839/204819
内部ORM、またはモデルレベルでさえも。
afterUpdate関数beforeInsert、afterInsert、beforeDelete、afterDeleteおよびafterUpdateを使用して、データベースで追加の処理を実行できます。例えば あなたのウェブルートにATK 4.1.3の解凍されたインストールを使用するとagitoolkitと呼ばれるフォルダが作成されます。これはATKHOMEと呼ばれます。
3つのフィールド(id、tasktype_desc、budget_code)とidとbudget_codeだけを持つ別のテーブルTASKTYPE_BUDGETを持つmysqlで単純なテーブルTASKTYPEを作成します。
次のようにInnoDBテーブルを使用して外部キーを持っている場合は、
class Model_TaskType extends Model_Table {
public $entity_code='tasktype';
public $table_alias='ty';
function defineFields(){
parent::defineFields();
$this->newField('id')
->mandatory(true);;
$this->newField('tasktype_desc')
->mandatory(true);
$this->newField('budget_code')
->mandatory(true);
}
public function afterInsert($new_id){
$ttb=$this->add('Model_TaskTypeBudget');
$ttb->set('id',$new_id)
->set('budget_code',$this->get('budget_code'));
$ttb->insert();
return $this;
}
public function beforeUpdate(&$data){
$ttb=$this->add('Model_TaskTypeBudget')->loadData($data['id']);
$ttb->set('budget_code', $data['budget_code']);
$ttb->update();
return $this;
}
public function beforeDelete(&$data){
$ttb=$this->add('Model_TaskTypeBudget')->loadData($data['id']);
$ttb->delete();
return $this;
}
}
(それが存在するdoesntの場合は、モデルのディレクトリを作成する必要がある場合があります)ATKHOME/libに/モデルに注意をテーブルのための2つのモデルを作成します。あなたは正しい順序で挿入と削除を行う必要があります。 TaskTypeBudgetからTaskTypeへの外部キーがID上にあった場合、beforeDeleteとafterInsertを使用して制約違反を防ぐ必要があります。
class Model_TaskTypeBudget extends Model_Table {
public $entity_code='tasktype_budget';
public $table_alias='tyb';
function defineFields(){
parent::defineFields();
$this->newField('id')
->mandatory(true);
$this->newField('budget_code')
->mandatory(true);
}
}
そしてこの
class page_tasktype extends Page {
function init(){
parent::init();
$p=$this;
$tt=$this->add('Model_TaskType');
$crud=$p->add('CRUD');
$crud->setModel($tt, array('id','tasktype_desc', 'budget_code'));
if($crud->grid)
$crud->grid->addPaginator(10);
}
}
ノートのようなATKHOME /ページ内のページも開口部<を含めるように注意してください? PHPのタグを各クラス行の前に挿入しますが、終了を含めないでください。 >これはAjaxでエラーが発生する可能性があるためです。
ATKHOME/config-default.phpで、mysql接続のユーザ名とパスワードをroot/rootからmysqlデータベースのユーザとパスワードに変更します。
$config['dsn']='mysql://atktest:[email protected]/atktest';
とのコメントを外し、すべてのページは、(あなたもちょうどます$ this-> dbConnectのを(追加することができます)データベースに接続することができますライン8にATKHOME/libに/ Frontend.phpを変更;ページへのライン
同じFrontend.phpでclass Frontend extends ApiFrontend {
function init(){
parent::init();
$this->dbConnect(); //uncommented
、私たちの新しいページを追加するには、デフォルトのメニューにボタンを追加するためにライン50を中心に、以下を挿入します。
->addMenuItem('CRUD Test', 'tasktype')
今すぐあなたのウェブブラウザに行き、http://localhost/agiletoolkitを入力してください最初のページでCRUD Testをクリックします。行を追加すると、TASKTYPEに行が追加され、同じidおよびbudget_codeを持つ行がTASKTYPE_BUDGETに追加されます。 budget_codeを編集すると両方の表に反映され、行を削除すると両方の表から削除されます。
機能がATk4によって提供されていることがわかったら、それはどのようにすっきりと簡単ですか?
- 1. 複数のテーブルからの削除ASP.NET
- 2. テーブル内での複数の更新
- 3. 複数のテーブルから削除
- 4. 複数のテーブル更新の問題
- 5. 関連テーブルの複数行の更新
- 6. 複数テーブル構文の更新
- 7. MySQL - 更新カスケード(複数のテーブル)
- 8. superadmin/dbaでテーブルの削除/更新を防止しますか?
- 9. 1つの移行で複数のテーブルを作成(削除)
- 10. 更新/削除クエリでASPNETDB.MDFのテーブルレコードを更新/削除する方法
- 11. のMySQL、PHPのテーブルの質問(更新時に削除)
- 12. テーブルの行を削除/更新する際のtablesorterPagerの問題
- 13. WebSphere Portal:Warの更新/削除
- 14. 重複キーで複数のテーブルを更新する
- 15. コアデータiPhone - 1つのテーブルの更新と他のテーブルからの削除
- 16. jspテーブルから複数行を更新
- 17. rake db:migrate削除されたテーブルでschema.rbを更新する
- 18. MySQLの複数テーブルの削除の構文
- 19. 更新エントリの合計カウントajaxでの追加、削除、更新
- 20. HABTM参照テーブル内の複数のオブジェクトを削除する
- 21. sqliteの複数のテーブルからデータを削除するには?
- 22. MySQL - 複数のテーブルの大きな削除
- 23. Access 2007の複数のテーブルからレコードを削除
- 24. Azureテーブルの複数のレコードを削除する
- 25. MYSQLテーブルからの重複を削除
- 26. 複数のチェックボックスを使用しない削除および更新ステートメント
- 27. Ruby On Railsでの複数テーブルの一括更新
- 28. 複数の新しいものと1つの削除
- 29. 複数の更新
- 30. 複数の更新
これを実行するためにモデルを使用する例を追加しました。編集ボタンと削除ボタンをオーバーライドするために必要なコードの例がありますか?ありがとう –