0

atk4.2.1

私はこのモデルを持っています:

class Model_Cargo extends Model_Table {
public $table='cargo';
function init(){
    parent::init();

    $this->hasOne('Alumno');
    $this->hasOne('Plan');

    $this->addField('fecha')->type('date');
    $this->addField('fechaCreacion')->type('date');
    $this->addField('fechaVencimiento')->type('date');
    $this->addField('name');
    $this->addField('monto')->type('money');
    $this->addField('cancelado')->type('boolean')->defaultValue(false);

    $this->hasMany('Abono');
    $this->addExpression('abonos')->set($this->refSQL('Abono')->sum('monto'));
   }
}

2つのフィールドで数学演算+または-を作成したい:実際には、フィールド'monto'を式'abonos'でサブストラクリングしたいのですが、どうすればよいですか?

このようなことを言うことができます:

$this->addExpression('balance')->set('monto'-'abonos');
//this does not work

また、これらのフィールドが等しい場所にConditionを追加したいと思います...それはできますか?

何かlke:

$this->addCondition('monto','abonos');
//this does not work
4

2 に答える 2

1

式で計算フィールドを使用する方法を示す例を作成しました。

http://agiletoolkit.org/codepad/model/def

あなたの問題のために、あなたはこのようなものを必要とするでしょう:

$this->addExpression('balance')->set(function($m,$q){
    return $q->expr('[f1] - [f2]')
        ->setCustom('f1',$m->getElement('monto'))
        ->setCustom('f2',$m->getElement('abonos'));
});
于 2012-07-23T11:15:20.307 に答える
1

$this->addExpression("balance")->set("monto - abonos");それだけです-SQL式。

次に、次のことができます。

$this->addCondition("balance", ">", 0);またはあなたが必要なものは何でも。

于 2012-07-22T11:50:06.070 に答える