2

Atk4 を使って作業することは、私のような新人にとって素晴らしい冒険です。そして今、私は自分で解決できない問題を抱えています。MySQL データベースに 2 つのテーブルがあります。1 つ目は user (id、user_id、email) という名前で、2 つ目は trips (id、user_id、name) という名前です。ユーザー用のログインおよび登録フォームを作成しました。ログインしたユーザーが自分の旅行を見ることができるようにしたい。私は、次のコードを使用して、プロファイル情報のためにこれを作成していました。

<?php
class page_userprofile extends Page{
    function init(){
    parent::init();
    $this->api->auth->check();
    $model = $this->add('Model_user');
    $this->add('FormAndSave')->setModel($model)->loadData($this->api->auth->get('id'));

}
}

Model_trips で似たようなことをしなければなりませんが、何がわかりません。私はAtk4ウェブサイトからその例を試しました:

// Traverse foreign keys. Automatically loads proper model and data
$company=$emp->getRef('company_id');

これは私が書いた最後のコードです:

<?php
class page_mytrips extends Page{
    function init(){
    parent::init();

    $this->api->auth->check();
    $model = $this->add('Model_trips');
    $this->add('FormAndSave')->setModel($model)->loadData($this->getRef('user_id'));

 }
}
4

1 に答える 1

1

あなたはとても近いです:

$model = $this->add('Model_trips');
$model->setMasterField('user_id', $this->api->auth->get('id'));

その後、CRUD、MVCGrid、MVCForm、またはMVCLister内でモデルを使用できます。次のルールが適用されます。

  • リストすると、現在のユーザーに属する旅行のみが表示されます
  • 追加すると、user_idは現在のユーザーのIDに設定されます

時々私は関数を追加します:

class Model_User extends Model_Table {
    function getTrips(){
         return $this->add('Model_trips')
              ->setMasterField('user_id',$this->get('id'));
    }
}

次に、以下を利用できます。

$model = $this->add('Model_user')->loadData($user_id)->$getTrips();

他のユーザーの旅行を見たい場合に便利です。

于 2011-10-11T11:51:26.000 に答える