Yii Framework Forum: Wywołanie Funkcji Z Innego Modelu - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Wywołanie Funkcji Z Innego Modelu Rate Topic: -----

#1 User is offline   mentorq 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 105
  • Joined: 26-June 13

Posted 19 August 2013 - 05:41 AM

Witam, mam problem z wywołaniem funkcji z innego modelu (nie wiem w którym momencie to wywołać).

Mam 2 tabele:
1) Płatności
2) Kwartalnie

W tabeli płatności wpisuje kwotę, datę i userId, po utworzeniu przekazuję te dane do formularza Kwartalnie. Po wykonaniu wszystkiego - tzn. stworzeniu płatności z tyloma i tyloma ratami itd chciałbym wywołać funkcję która oblicza mi saldo danego użytkownika w płatnościach.

Tutaj pojawia się problem, ponieważ obliczenia są dokonywane dopiero po wpisaniu i zapisaniu w bazie Kwartalnie. Kolejność: Płatności -> Kwartalnie -> Obliczenie salda. Jak mogę to zrobić ? W modelu Kwartalnie po afterSave() ? W kontrolerze ?

Obliczenie salda
public function getTotals($ids)
        {
                $connection=Yii::app()->db;
                $command=$connection->createCommand("SELECT SUM(rata1) FROM `kwartalnie` where payment_paymentId=$ids");
(...)
               $command5=$connection->createCommand("SELECT SUM(wplata1) FROM `kwartalnie` where payment_paymentId=$ids");
(...)
                $amount = $command->queryScalar();
                $rest = $command5->queryScalar();
                return $wynik = $rest-$amount;
        }


Myślałem nad czymś w rodzaju:

W modelu Kwartalnie funkcja afterSave() i dać coś ala $model->saldo = $model-> getTotals(), ale samo wywołanie robi się dla mnie zbyt zagmatwane...
0

#2 User is offline   mentorq 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 105
  • Joined: 26-June 13

Posted 19 August 2013 - 07:53 AM

Póki co udało mi się wywołać funkcją afterSave() z modelu Kwartalnie, ale przypisując wartość stałą.


EDIT:
Udało mi się osiągnąć to co chciałem:

public function afterSave()
        {
            parent::afterSave();
            $payment = new Payment;
            $payment->isNewRecord = false;

            $test = Payment::model()->getTotals($this->payment_paymentId);
            
            Payment::model()->updateByPk($this->payment_paymentId, array('saldo'=>$test));
            //$payment->saveAttributes(array('saldo'=>$bla));
        }

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users