0

我目前正在使用 CakePHP 制作画廊。这是我第一次将关系数据库与 Cake 一起使用,我对此有疑问。

在我的画廊中,现在是一个非常简单的画廊(因为它是一种可能导致最终产品的学习体验),我有一个单一的关系集:

首先,有两种模型:Album 和 Image。专辑通过 HasMany 关系与 Image 相关,而 Image 属于专辑(通过 BelongsTo 关系)。我已经在 cakePHP 上建立了数据库关系,没有任何问题。

以防万一,这是 php 中两个类的定义:

专辑:

<?php 

class Album extends AppModel {
    public $name = 'Album';

    public $hasMany = array(
        'Image' => array(
            'className' => 'Image',
            'order' => 'Image.added DESC',
            'dependent' => true
        )
    );

    public $validate = array(
        'name' => array(
            'rule' => 'notEmpty'
        ),
        'description' => array(
        )
    );

}

?>

对于图像:

<?php 

class Image extends AppModel {
    public $name = 'Image';

    public $belongsTo = 'Album';


}

?>

Image 类仍然没有验证,因为我开始使用它。现在,我可以通过控制器页面中的一个简单功能非常轻松地添加相册:

public function add() {
    if ($this->request->is('post')) {
        $this->Album->create();
        if ($this->Album->save($this->request->data)) {
            $this->Session->setFlash('Your album has been created.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('Unable to create your album.');
        }
    }
}

以及视图文件中用于添加功能的简单功能:

<?php

echo $this->Form->create('Album');
echo $this->Form->input('name');
echo $this->Form->input('description');

echo $this->Form->end('Save Album');
?>

但是,我不知道如何添加图像。当然,我可以使用像专辑一样的代码,但是我该如何设置图像所属的专辑呢?我已经搜索并发现了大量关于如何建立关系的问题,但没有关于如何将关系数据实际添加到已经建立的数据库的问题。有什么帮助吗?

请注意,我特别询问如何按照关系模型将数据放入数据库中。我已经知道如何用 cakephp 自己处理图像,这是我想知道的整个添加关系数据:)

提前致谢!

4

1 回答 1

1

创建一个选择:

在您的图像控制器中

public function add() {
    //
    // ...
    //
    $albums = $this->Image->Album->find('list');
    $this->set('albums', $albums);
}

在您的 add.ctp 视图文件中的某处

echo $this->Form->input('album_id');
于 2013-10-17T05:56:55.790 回答