Можно ли использовать встроенные поля в сетке MVC?
Как?
Я пробовал несколько способов, которые я могу себе представить, как:
$g=$this->add('MVCGrid');
$g->setModel('ProgramaPago');
$g->addColumn('inline','temp_pago');
$g->dq->where('alumno_id',$_GET['id']);
Появляется, но если попытаться отредактировать, получите ошибки SQLException, такие как:
Не удалось выполнить запрос: обновить набор программ programaPago pp temp_pago
= 34
где (alumno_id = '1') и (programaPago pp.id = '1')
Но не могу понять ... Спасибо еще раз
Вот мои вовлеченные модели:
class Model_ProgramaPago extends Model_Table {
public $entity_code='programaPago';
public $table_alias='pp';
function init(){
parent::init();
$this->addField('alumno_id')->caption('Alumno')->refModel('Model_Alumno')->mandatory(true);
$this->addField('fechaVencimiento')->caption('Fecha de Vencimiento')->type('date')->mandatory(true);
$this->addField('concepto')->caption('concepto')->type('text')->mandatory(true);
$this->addField('monto')->caption('Monto')->type('money')->mandatory(true);
$this->addField('montoPagado')->caption('Monto Pagado')->type('money')->calculated(true);
$this->addField('montoPendiente')->caption('Monto Pendiente')->type('money')->calculated(true);
$this->addField('temp_pago')->caption('Este Pago')->type('money')->mandatory(true);
}
function calculate_montoPagado(){
return "SELECT SUM( caja.monto ) FROM caja WHERE caja.programaPago_id =".
($this->table_alias?:$this->entity_code).
".id";
}
function calculate_montoPendiente(){
return "(SELECT ( programaPago.monto - COALESCE(iTotal.TotalMonto,0)) Result
FROM programaPago LEFT JOIN
(SELECT programaPago_id, SUM(monto) as TotalMonto
FROM caja GROUP BY programaPago_id) as iTotal
ON programaPago.ID = iTotal.programaPago_id
WHERE programaPago.ID =".
($this->table_alias?:$this->entity_code).
".id)";
}
}
А вот то, что вызывается из функции расчета:
class Model_Caja extends Model_Table {
public $entity_code='caja';
public $table_alias='c';
function init(){
parent::init();
$this->defineAuditFields();
$this->addField('concepto')->caption('Concepto')->mandatory(true);
$this->addField('monto')->type('money')->caption('Monto')->mandatory(true);
$this->addField('programaPago_id')->refModel('Model_ProgramaPago');
}
}