CakePHP:可以在查找中使用虚拟字段吗?

时间:2019-05-20 15:47:05

标签: mysql cakephp

在官方docs中,我读到:

  

请记住,虚拟字段不能在发现中使用。如果您希望它们成为实体的JSON或数组表示形式的一部分,请参阅公开虚拟字段。

我不清楚第二句话是否与第一个句子有某种联系(例如,作为克服限制的一种解决方法)或它们是完全独立的。

我的意思是:如果我公开了虚拟字段,那么我可以在\[(.*?)\] 语句中使用它吗?

是否可以在查询中包含虚拟字段?这是一个真实的例子:

ItemOrdersTable.php:

find

实体:

$this->setTable('item_orders');
$this->setDisplayField('summary'); // virtual field
$this->setPrimaryKey('id');

在控制器中的用法:

protected $_virtual = [
    'summary'
];

protected function _getSummary()
{
    return $this->name . ' ' . $this->description;
}

因为我将'summary'指定为return TableRegistry::get('itemOrders')->find('list')->where(['order_id' => $id]); ,所以我期望所有符合where子句的记录的键值列表,其中DisplayField为键,id虚拟字段作为值。因为这不会发生(返回的对象为null),所以我试图了解我的代码是错误的还是我没有正确阅读上述要求的文档。

1 个答案:

答案 0 :(得分:1)

自定义键值输出:

https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#customize-key-value-output

更新

 <Textfield
    inputProps={
    {
      autocomplete: "new-password",
      form: {
        autocomplete: "off",
      }
    }
  />