2012-08-15 28 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')); 
} 
}); 
相关问题