Шаблон имеет доступ только к идентификаторам "чужой" таблицы - PullRequest
0 голосов
/ 28 декабря 2018

Я следовал примеру на сайте cakephp и модифицировал его так, чтобы он «работал» для моего проекта.

У меня есть таблица со столбцом, который является внешним ключом для другой таблицы, но мой шаблон заполняется только идентификаторами, а не другими столбцами (внешней) таблицы.Как мне получить доступ к "categoryorieen.type" в моем представлении шаблона?

enter image description here

+----------------------------------+
|           PRODUCTEN              | 
+----------------------------------+
| productenid  (PK)                | 
| categorie    (FK)                | 
+----------------------------------+

+----------------------------------+
|           CATEGORIEEN            |
+----------------------------------+
| categorieid  (PK)                | 
| type                             | 
+----------------------------------+

ProductenTable

class ProductenTable extends Table {

    public function initialize(array $config){
        $this->belongsTo('Categorieen');
        $this->addBehavior('Timestamp');
    }
    ...
}

ProductenController

public function add() {
        $product = $this->Producten->newEntity();
        if ($this->request->is('post')) {
            $product = $this->Producten->patchEntity($product, $this->request->getData());

            if ($this->Producten->save($product)) {
                $this->Flash->success(__('Your product has been saved.'));
                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('Unable to add your product.'));
        }

        $categorieen = $this->Producten->Categorieen->find('list');

        $this->set('product', $product);
        $this->set('categorieen', $categorieen);
    }

add.ctp

echo $this->Form->control('categorieen', ['options' => $categorieen]);

1 Ответ

0 голосов
/ 30 декабря 2018

Мне пришлось изменить add () на:

public function add() {
        $product = $this->Producten->newEntity();
        if ($this->request->is('post')) {
            $product = $this->Producten->patchEntity($product, $this->request->getData());

            if ($this->Producten->save($product)) {
                $this->Flash->success(__('Your product has been saved.'));
                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('Unable to add your product.'));
        }

        $categorieen = $this->Producten->Categorieen->find('list', -----> CHANGED
            ['keyField' => 'categorieid', 'valueField' => 'type']
        );

        $this->set('product', $product);
        $this->set('categorieen', $categorieen);
    }

и мой edit.ctp на:

echo $this->Form->control('categorie', ['options' => $categorieen]);
...