【问题标题】:Adding expression to CRUD将表达式添加到 CRUD
【发布时间】:2012-08-31 06:44:28
【问题描述】:

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

【问题讨论】:

  • 当然可以。尝试先创建模型对象,并在setModel()之前为其添加条件,setModel()->addCondition()似乎有问题,但我还没有完全测试过。

标签: atk4


【解决方案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'));
}
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多