我找到了adding and expression to a model using ATK4.2.1的新方法,但是我在将此问题添加到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 :(得分:1)
文档页面上有一个错误。 Agile Toolkit中的所有回调方法都接收“Caller”作为第一个参数。在这种情况下,它将是模型本身。第二个参数是查询,它正在进行中。使用哪个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'));
}
});