1

バックグラウンド

スモール ビジネスのオンライン データベースを作成する仕事を与えられました。このデータベースには、多くの情報だけでなく、取締役や支部に関する情報も含まれています。どのような企業にも取締役や支店は無制限に存在する可能性があるため、1 つの取締役や支店に限定されないデータベースを作成する必要があります。

私は何を持っていますか

現在、私は3つのテーブルを持っています。

smmes [id, company_name, trading_name, business_address, registration_number, tax_reference, vat_number, bbbee_status, employees, awards, created, modified]
ownerships [id, smme_id, name, surname, gender, age, race, disability, qualification, created, modified]
branches [id, smme_id, location, contact_number, contact_person, created, modified]

注: smme_id は、支店または取締役が所属する smmes 内の会社の ID です。

そして、私はSMMEの見解を持っています。

私の質問は何ですか

私は CakePHP を初めて使用します (実際、これは CakePHP で作成した最初のアプリです)。ユーザーがこのすべての詳細を入力できる 1 つのフォームを作成し、1 つのビューからすべてのディレクターとブランチの詳細を追加する方法を知りたいです。すべての詳細を作成するために通過するさまざまなビューがないことを望みます。それに加えて、この 1 つのビューは、正しい smme_id を持つ正しいテーブルにすべてのデータを保存する必要があります。

これは可能ですか、それとも CakePHP を残して手動で記述する必要がありますか。

4

1 に答える 1

1

コントローラーにモデルをオンデマンドでロードし、モデル固有のデータ (投稿されたフォームから受け取ったもの) をロードしたモデルの save メソッドに渡すことができます。

public function detail(){

    if($this->request->is('post')): // update only when form is posted

        $this->loadModel('ownerships');
        $owner_name= $this->request->data['Ownername'];
        $ownerships_data = array('Ownership' = > array(
                             'name' = > $owner_name
                             //add other keys from posted form
                             )
                       ); 
        $this->Ownership->saveAll($ownerships_data);
    // load other models for saving posted data in related tables
    endif;
}

同様に、他のモデルをロードし、投稿されたフォームのフィールドを配列としてその save メソッドに渡します。URL 形式がhttp://example.com/director/detail.So であると仮定します。したがって、上記のメソッド (MVC 用語ではアクションと呼ばれます) をapp/controllers/directors_controller.php

通常、URL 形式の場合、アクション http://somesite.com/abc/xyzを検索しますxyzapp/controllers/abcs_controller.php

ケーキコンベンションの詳細については、こちらをご覧ください

于 2013-01-16T15:06:07.713 に答える