0

我正在使用 CakePHP 3.0 构建一个应用程序。我有一个 FactsTable 和一个 InterferencesTable。干扰具有以下字段:

[id][changed_fact_id][influenced_fact_id][trend][modified_by][modified_at][created_by][created_at]

关联如下所示:

事实表:

 `$this->belongsToMany('InfluencedFacts', [
     'through' => 'Interferences',
     'className' => 'Facts',
     'foreignKey' => 'changed_fact_id'
 ]);
 $this->belongsToMany('ChangedFacts', [
     'through' => 'Interferences',
     'className' => 'Facts',
     'foreignKey' => 'influenced_fact_id'
 ]);`

干扰表:

`$this->belongsTo('ChangedFacts', [
    'className' => 'Facts',
    'foreignKey' => 'influenced_fact_id',
]);
$this->belongsTo('InfluencedFacts', [
    'className' => 'Facts',
    'foreignKey' => 'changed_fact_id',
]);`

我烘焙了我的控制器和视图。保存一个新的事实工作正常,但关联没有保存。我尝试手动保存关联,但它也不起作用。

如果我在模型关联中犯了错误,请告诉我;)

从 FactsController.php 保存代码:

`public function add() {
    $fact = $this->Facts->newEntity($this->request->data);
    if ($this->request->is('post')) {
        if ($this->Facts->save($fact)) {
            $id = $fact->get('id');
            $this->Flash->success('The fact has been saved.');
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error('The fact could not be saved. Please, try again.');
        }
    }
    $aggregates = $this->Facts->Aggregates->find('list');
    $plants = $this->Facts->Plants->find('list');
    $influencedFacts = $this->Facts->InfluencedFacts->find('list');
    $this->set(compact('fact', 'aggregates', 'plants', 'influencedFacts'));
}`

事实实体:

`protected $_accessible = [
    'name' => true,
    'short' => true,
    'description' => true,
    'modified_by' => true,
    'modified_at' => true,
    'created_by' => true,
    'created_at' => true,
    'aggregates' => true,
    'plants' => true,
];`
4

0 回答 0