Загрузка данных из базы данных с Atk4 - PullRequest
2 голосов
/ 11 октября 2011

Работать с 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 Ответ

1 голос
/ 11 октября 2011

Вы очень близки:

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

После этого вы можете использовать модель внутри CRUD, MVCGrid, MVCForm или MVCLister, будет применяться следующее правило:

  • При перечислении будут отображаться только поездки, принадлежащие текущему пользователю
  • При добавлении user_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();

Удобно, если вы хотите увидеть поездки других пользователей.

...