Можно ли использовать встроенные поля в сетке MVC? - PullRequest
0 голосов
/ 06 февраля 2012

Можно ли использовать встроенные поля в сетке 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');
}
}
...