【发布时间】:2018-06-22 08:13:17
【问题描述】:
今天我偶然发现了一个我以前从未真正考虑过的问题。我正在使用friendsofcake/CRUD 插件并尝试使用belongsTo() 关系更新实体,如下所示:
class UsersTable extends Table {
public function initilialize(array $config)
{
$this->belongsTo('Organisations')
...
Angular 客户端调用GET /users/1 来检索以下数据:
$data = [
'id' = 1,
'username' => 'kylekatarn',
'organistion_id' => 1,
'organisation' => [
'id' => 1,
'label' => 'The Empire'
]
];
客户还拥有来自GET /organistaions 的所有可用组织的列表:
$organisations = [
[
'id' => 1,
'label' => 'The Empire'
],[
'id' => 2,
'label' => 'Rebel Alliance'
]
]
现在 Kyle Katarn 投奔 Rebel Alliance,Rebel 舰队命令用户数据库的 angular 客户端向我发送这样的数据到 PUT /users/1:
$data = [
'id' => 1,
'username' => 'kylekatarn',
'organisation_id' => 1,
'organisation' => [
'id' => 2,
'label' => 'Rebel Alliance'
]
];
我的意图是用户 kylekatarn 应该从 organisation_id = 1 切换到在组织对象中找到的新组织。出于某种原因,我认为这应该开箱即用,但是 ORM 为组织添加了一个新条目。
经过一番挖掘,我发现组织实体没有将“id”设置为可访问。在我将“id”添加到可访问实体成员列表后,一切正常。
现在我的问题是,这是否是处理此类问题的好方法?将 id 设置为可访问有什么陷阱吗?或者在我的情况下使用user.organisation_id 更新关联实体会更好吗?
非常感谢!
【问题讨论】:
标签: associations entity cakephp-3.0 put