gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:43:00 25 4
gpt4 key购买 nike

在官方docs我读到:

Do bear in mind that virtual fields cannot be used in finds. If you want them to be part of JSON or array representations of your entities, see Exposing Virtual Fields.

我不清楚第二句话是否与第一句话有某种关系 - 比如作为克服限制的解决方法 - 或者它们是完全独立的。

我的意思是:如果我公开虚拟字段,那么我可以在 find 语句中使用它吗?

有没有办法在查询中包含虚拟字段?这是一个真实的例子:

ItemOrdersTable.php:

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

实体:

protected $_virtual = [
'summary'
];

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

在 Controller 中的用法:

return TableRegistry::get('itemOrders')->find('list')->where(['order_id' => $id]);

因为我将“summary”指定为 DisplayField,所以我期望得到满足 where 子句的所有记录的键值列表,其中 id 作为键, summary 虚拟字段作为值。因为这种情况不会发生(返回的对象为空),我试图了解我的代码是否错误或者我没有按照上面的要求正确阅读文档。

最佳答案

自定义键值输出:

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

更新:

$results = TableRegistry::getTableLocator()->get('item_orders')
->find('list')
->where(['order_id' => $id]);

debug($results->toArray());
$this->set('orders', $results);
debug($orders); exit; <-- test results, and post in your question.

关于mysql - CakePHP:虚拟字段可以在查找中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56224302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com