将表达式添加到CRUD

时间:2012-08-15 04:40:44

标签: atk4

我找到了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);

1 个答案:

答案 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'));
}
});