2011-10-11 102 views
2

与Atk4一起工作对于像我这样的新手来说是一次伟大的冒险。现在我真的有一个我自己无法解决的问题。 我在MySQL数据库中有两个表。第一个名为user(id,username,email),第二个名为trips(id,user_id,name)。我为用户做了登录和注册表单。我希望登录的用户能够看到它自己的旅程。我用来做这件事情,使用下面的代码的配置文件信息:使用Atk4从数据库加载数据

<?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

您是非常接近:

$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(); 

方便,如果你想看到其他用户的旅行。

+0

非常感谢。 atk4是一个非常棒的框架! – tazdevil