Cakephp3 可以保存数据但不能保存关联
Cakephp3 able to save data but cannot save associations
您好,我正在尝试通过 Cakephp3 框架保存数据。我有两个 tables Measures 和 MeasuresUsers。 Measures 有很多 MeasuresUsers
$data = [
'name' => $this->request->data['name'],
'description' => $this->request->data['description'],
'deleted' => $this->request->data['deleted'],
'chart_type' => $this->request->data['chart_type'],
'public' => $this->request->data['public'],
'user_id' => $this->request->data['user_id']
];
$measure = $this->Measures->newEntity($data,['associated' => ['MeasuresUsers']]);
$measure['measures_users'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
$this->Measures->save($measure)
我可以将数据保存到 Measures table 中,但不能保存到关联 table (MeasuresUsers) 中。我不确定我在这里遗漏了什么,欢迎任何帮助或评论!
来自 CakePHP 2.x,我看到你的关联模型是 MeasuresUsers。
当您在
中设置关联数据时
$measure['measures_users'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
尝试将 $measure['measures_users'] 更改为 $measure['MeasuresUsers']:
$measure['MeasuresUsers'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
CakePHP 的模型约定通常假定您在数据库中拥有的内容的驼峰式大小写,例如DB Table 它 movie_tickets 和 Cake 期望的是 MovieTicket 除非在模型本身中另有声明。
@HarryM。很接近,但是您想在创建实体之前将数据放入 $data
数组(如果您不提供该数据,associated
标记就有点毫无意义!),因为它是一个 hasMany 关系,我认为您需要将数据放在数组的数组中:
$data = [
'name' => $this->request->data['name'],
'description' => $this->request->data['description'],
'deleted' => $this->request->data['deleted'],
'chart_type' => $this->request->data['chart_type'],
'public' => $this->request->data['public'],
'user_id' => $this->request->data['user_id'],
'measures_users' => [
[
'user_id' => $user['id'], // Should this be $this->request->data['user_id'] instead?
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public'],
],
],
];
$measure = $this->Measures->newEntity($data, ['associated' => ['MeasuresUsers']]);
$this->Measures->save($measure);
您好,我正在尝试通过 Cakephp3 框架保存数据。我有两个 tables Measures 和 MeasuresUsers。 Measures 有很多 MeasuresUsers
$data = [
'name' => $this->request->data['name'],
'description' => $this->request->data['description'],
'deleted' => $this->request->data['deleted'],
'chart_type' => $this->request->data['chart_type'],
'public' => $this->request->data['public'],
'user_id' => $this->request->data['user_id']
];
$measure = $this->Measures->newEntity($data,['associated' => ['MeasuresUsers']]);
$measure['measures_users'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
$this->Measures->save($measure)
我可以将数据保存到 Measures table 中,但不能保存到关联 table (MeasuresUsers) 中。我不确定我在这里遗漏了什么,欢迎任何帮助或评论!
来自 CakePHP 2.x,我看到你的关联模型是 MeasuresUsers。
当您在
中设置关联数据时$measure['measures_users'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
尝试将 $measure['measures_users'] 更改为 $measure['MeasuresUsers']:
$measure['MeasuresUsers'] = [
'user_id' => $user['id'],
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public']
];
CakePHP 的模型约定通常假定您在数据库中拥有的内容的驼峰式大小写,例如DB Table 它 movie_tickets 和 Cake 期望的是 MovieTicket 除非在模型本身中另有声明。
@HarryM。很接近,但是您想在创建实体之前将数据放入 $data
数组(如果您不提供该数据,associated
标记就有点毫无意义!),因为它是一个 hasMany 关系,我认为您需要将数据放在数组的数组中:
$data = [
'name' => $this->request->data['name'],
'description' => $this->request->data['description'],
'deleted' => $this->request->data['deleted'],
'chart_type' => $this->request->data['chart_type'],
'public' => $this->request->data['public'],
'user_id' => $this->request->data['user_id'],
'measures_users' => [
[
'user_id' => $user['id'], // Should this be $this->request->data['user_id'] instead?
'chart_type' => $this->request->data['chart_type'],
'deleted' => $this->request->data['deleted'],
'public' => $this->request->data['public'],
],
],
];
$measure = $this->Measures->newEntity($data, ['associated' => ['MeasuresUsers']]);
$this->Measures->save($measure);