2012-08-26 76 views
0

我一直由敏捷工具包在這個部分中和我的書以下內容: http://agiletoolkit.org/learn/app/logic敏捷工具包addExpression和DSQL

不幸的是,DSQL API缺少一些清晰度和網頁上的計算字段例子只是不工作。

我試着使用:

class Model_DVD extends Model_Table { 

     public $table='dvd'; 

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

     $this->hasOne('Movie'); 
     $this->addField('code'); 
     $this->addfield('is_rented') 
      ->type('boolean') 
      ->calculated(true); 
    } 

    function calculate_is_rented(){ 
     return $this->add('Model_Rental') 
      ->dsql() 
      ->field('id') 
      ->where('rental.dvd_id=dvd.id') 
      ->where('is_returned!=','Y') 
      ->select() 
      ; 
    } 
} 

這將返回每一次,所以我試圖按照1: Calculated field always returns 1 - atk 4.2

現在我不知道如何正確地創建這一點;我知道下面的工作,但我有點做了它,因爲我去了,沒有想法,爲什麼它的工作,以及爲什麼我需要計數() - 等等等

如何讓計算的字段工作?有人可以在這個例子中解釋它,我通過例子學得最好,所以我想跟隨它。

我的工作代碼,我不明白:

class Model_DVD extends Model_Table { 

    public $table='dvd'; 

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

     $this->hasOne('Movie'); 
     $this->addField('code'); 

     $this->debug(); 

     $this->addExpression('is_rented')->set($this->add('Model_Rental') 
                ->addCondition('dvd_id', $this->_dsql()->getField('id')) 
                ->count() 
                ->where('is_returned!=','Y')) 
                ->datatype('boolean') 
                ->enum(array('Y', 'N')); 
    } 
} 

謝謝!

回答