Могу ли я использовать модель Atk4 для этого? - PullRequest
0 голосов
/ 02 февраля 2012

Я ломал голову, пытаясь понять, как это смоделировать, вместо того, чтобы переходить на php низкого уровня.Итак, у меня есть следующие модели / таблицы:

Студент (идентификатор, имя).Программа (идентификатор, имя, начальная дата, конечная дата, firstpaymentDueDate, qtyOfPeriods, цена).

Я должен зарегистрировать заявку студента в программе, которая состоит из нескольких месяцев.Поэтому я хочу заполнить таблицу: paymentSchedule (id, student_id, dueDate, amount) Поскольку в одной программе может быть до 10 периодов, мне нужно было бы добавить 10 автоматических записей в paymentSchedule для каждого студенческого приложения.У меня вопрос, можно ли это смоделировать?

Я бы хотел использовать платежный график, чтобы принимать записи о платежах и вставлять их в таблицу транзакций.

Спасибо за вашу поддержку и спасибо за разработкутакой замечательный инструментарий!

1 Ответ

2 голосов
/ 03 февраля 2012

КОРОТКИЙ ОТВЕТ: ДА , вы можете смоделировать это в ATK4

У вас в основном все таблицы идеально налажены.

Чтобы создать модель, просто создайте файл Student.php и поместите его в папке / lib / Model /.

 class Model_Student extends Model_Table {
    public $entity_code = 'Student';

    function init() {
       parent::init();

       $this->addField('name')->caption('Student Name');
    }
 }

Вы можете сделать то же самое для других ваших столов:

Program (id, name, startdate, enddate, firstpaymentDueDate, qtyOfPeriods, price) а также paymentSchedule (id, student_id, dueDate, amount)

Чтобы узнать больше о моделях, предлагаю вам прочитать вступление: http://agiletoolkit.org/learn/understand/model/intro


Обработка таблицы, например, paymentSchedule отличается история в целом. Для этого вам нужен DSQL (динамический SQL).

Предполагается, что ваша таблица Program находится в классе модели с именем Model_Program. Чтобы получить запись:

 $m = $this->add('Model_Program');
 $v = $m->dsql()
    ->field('qtyOfPeriods')
    ->field('price')
    ->where('id=',$programid) // specific program
    ->do_getOne();

 $m = $this->add('Model_PaymentSched');
 $r = $m->dsql()
    ->set('student_id',$studentid) // specific student
    ->set('amount',$v['price'])
    ->do_insert();

Это позволит получить запись для конкретной программы и затем вставьте его в график платежей:

...