2

对于像我这样的新手来说,与 Atk4 合作是一次伟大的冒险。现在我真的有一个我自己无法解决的问题。我在 MySQL 数据库中有两个表。第一个名为 user(id、username、email),第二个名为 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 回答