2012-08-15 53 views
0

我發現了adding and expression to a model using ATK4.2.1的新方法,但我在將問題添加到CRUD視圖時出現問題,但未收到錯誤「未爲此對象定義方法」在CRUD中添加表達式

這可能嗎?可以在CRUD對象中查看錶達式嗎?

型號代碼

->addExpression('books_written')->set(function($select){ 
    return $select->dsql() 
    ->table('book') 
    ->field($select->expr('count(*)')) 
    ->where('author_id',$select->getField('id')); 
} 
}); 

頁面方法是通過添加「isUser」的字段列表導致錯誤。

$crud = $AddressBook->add('CRUD'); 
$crud->setModel('PersonLockedAccount',array('firstName','lastName','email','mobile','isUser'))->addCondition('account_id',$accountId)->addCondition('id','!=',$personId); 
+0

它當然可以。首先嚐試創建模型對象,並在setModel()之前向它添加條件,似乎setModel() - > addCondition()存在問題,但我沒有完全測試它。 – romaninsh 2012-08-16 09:43:43

回答

1

文檔頁面存在錯誤。 Agile Toolkit中的所有回調方法都會收到一個「調用者」作爲第一個參數。在這種情況下,它將是模型本身。第二個參數是正在進行的查詢。無論你使用哪種dsql表達式:

->addExpression('books_written')->set(function($model,$select){ 
//            ^^^^^^ 
    return $select->dsql() // creates new, empty dsql 
    ->table('book') 
    ->field($select->expr('count(*)')) 
    ->where('author_id',$select->getField('id')); 
} 
});