gpt4 book ai didi

cakephp 让用户向模型添加自定义字段

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

我正在考虑将 CakePHP (2.x) 用于我正在处理的新项目。该项目将拥有拥有客户的用户。客户端模型上会有默认字段,如姓名、地址、电子邮件等。但我的客户希望用户能够向他们的客户添加自定义字段。

因此,用户 1 可能希望为其客户添加“最喜欢的颜色”字段,而用户 2 可能希望为其客户添加“最喜欢的运动”字段。 (这些只是例子)

有没有办法用 CakePHP 做到这一点?在 Controller 、模型和 View 已经烘焙之后向模型添加字段的最佳解决方案是什么?

我的第一个想法是设置以下模型

用户 ( id, username, password ) hasMany: 客户端

客户 ( id, first_name, last_name, user_id )belongsTo: User hasMany:ClientFields

ClientFieldKey ( id, field_name, user_id )belongsTo: User hasMany:ClientFieldValues

ClientFieldValue ( id, client_field_key_id, field_value )属于:ClientFieldKey

客户字段 ( id, client_id, client_field_value_id )belongsTo: Client, ClientFieldValue

那么我可以有如下内容

客户 ( id: 1, 用户名: user1, 密码: pass1, user_id: 1)

客户 ( id: 2, 用户名: user2, 密码: pass2, user_id: 1)

客户 ( id: 3, 用户名: user3, 密码: pass3, user_id: 2)

客户 ( id: 4, 用户名: user4, 密码: pass4, user_id: 2)

ClientFieldKey ( id: 1, field_name: 颜色, user_id: 1 )

ClientFieldKey ( id: 1, field_name: Sport, user_id: 2 )

ClientFieldValue ( id: 1, client_field_key_id: 1, field_value: red )

ClientFieldValue ( id: 2, client_field_key_id: 1, field_value: blue )

ClientFieldValue ( id: 3, client_field_key_id: 2, field_value: hockey )

ClientFieldValue ( id: 4, client_field_key_id: 2, field_value: 足球)

客户字段 ( id: 1, client_id: 1, client_field_value_id: 2 )

客户字段 ( id: 2, client_id: 2, client_field_value_id: 1 )

客户字段 ( id: 3, client_id: 3, client_field_value_id: 3 )

客户字段 ( id: 4, client_id: 4, client_field_value_id: 4 )

这意味着用户 1 创建了喜欢蓝色的客户端 1 和喜欢红色的客户端 2。用户 2 创建了喜欢曲棍球的客户端 3 和喜欢足球的客户端 4。

像这样的模型结构在 CakePHP 中工作吗?如果是这样,我将如何将字段添加到客户端动态添加和编辑表单,我应该怎么称呼这些表?

最佳答案

更新 我不确定您是否更新了您的问题,或者我是否只是没有足够仔细地阅读它,但是我已经更新了我的答案,以便它是关于客户而不是用户。 /更新

我会使用一个额外的表/模型来定义属性(大概是键/值对),并将其连接到 Client使用 hasMany关系,即 Client hasMany Property .

这样你以后就可以为 Client 分配尽可能多的任何属性。你喜欢。

这是一个(未经测试的)示例:

属性表

properties
+------------------------------+
| id | client_id | key | value |
+------------------------------+

属性模型
class Property extends AppModel
{
...

public $belongsTo = array
(
'Client' => array
(
'className' => 'Client',
'foreignKey' => 'client_id'
)
);

...
}

客户端型号
class Client extends AppModel
{
...

public $hasMany = array
(
'Property' => array
(
'className' => 'Property',
'foreignKey' => 'client_id',
'dependent' => true
)
);

...
}

向客户端添加属性
$data = array
(
'Client' => array
(
'id' => 1234
),
'Property' = array
(
array
(
'key' => 'favorite_color',
'value' => 'green'
),
array
(
'key' => 'favorite_sport',
'value' => 'hockey'
)
)
);

$Client->saveAssociated($data);

关于cakephp 让用户向模型添加自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030242/

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