gpt4 book ai didi

CakePhp 使用来自另一个表的 valueField 创建列表

转载 作者:行者123 更新时间:2023-12-04 13:23:51 25 4
gpt4 key购买 nike

我想从一个表创建列表,将包含与另一个表一起使用,并从第一个表创建 keyField,但从另一个表 + 键创建 valueField。

我有表 CustomerNumbers (key => customer_number) -> Users -> Groups (value => name)需要创建列表,其中所有 CustomerNumbers.customer_number 作为键,Groups.name 加上键作为值。

这是我的查询(另外,我不想让标准的经典 php foreach 来创建列表)

$customerNumbers = $customerNumbersTable
->find('list', [
'keyField' => 'customer_number',
'valueField' => 'user.group.name' . ' ' . 'customer_number'
])
->group([
'customer_number'
])
->contain('Users.Groups')
->where(['customer_number >' => 0]);

结果应该是这样的

(int) 11010080 => Frist group 11010080,
(int) 20000710 => Second group 20000710,
(int) 20001205 => Third group 20001205,

此外,这不是@drmonkeyninja 的重复问题,因为在您的示例(Question)中,您需要使用来自单个模型的虚拟字段选项(例如,模型用户并将名字和姓氏作为一个字段)。在我的例子中,我需要模型客户编号中的虚拟字段和模型组中的另一个字段。

这是纯 php 的解决方案,但我希望也有 CakePhp 灵魂。

$getCustomerNumbers = $customerNumbersTable->find('all')
->group([
'customer_number'
])
->contain('Users.Groups')
->hydrate(false);

$customerNumbers = [];
foreach($getCustomerNumbers as $key => $val):
$customerNumbers[$val['customer_number']] =
$val['user']['group']['first_name'] .
$val['user']['group']['last_name'] .
' ('. $val['customer_number'].')';
endforeach;

最佳答案

我在地址表中查找具有名称的不同国家的示例:

$countries = TableRegistry::get('Addresses')->find('list', [
'keyField' => 'country_id',
'valueField' => function ($row) {
return $row->country->name;
}
])
->contain(['Countries'])->where(['contact_id IS NOT' => null])
->group(['country_id'])
->order(['Countries.name' => 'asc']);

干得好

关于CakePhp 使用来自另一个表的 valueField 创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678707/

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