使用Atk4从数据库加载数据

时间:2011-10-11 10:27:48

标签: php model-view-controller pop atk4

与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'));

 }
}

请帮帮我!!!

1 个答案:

答案 0 :(得分: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();

如果您想看到其他用户的旅行,请提供便利。