Cakephp - 将数据添加到关系数据库

时间:2013-10-16 16:28:37

标签: database cakephp cakephp-2.0 relational-database relational

我目前正在使用CakePHP开发一个库。这是我第一次使用Cake的关系数据库,我对此有疑问。

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

首先,有两种模式:专辑和图像。相册通过HasMany关系与图像相关,而图像属于相册(通过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(
        )
    );

}

?>

For Image:

<?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.');
        }
    }
}

除了add函数的视图文件中的一个简单函数:

<?php

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

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

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

请注意,我具体询问如何将数据放入关系模型之后的数据库中。我已经知道如何使用cakephp处理图像本身,这是我想知道的整个添加关系数据:)

提前致谢!

1 个答案:

答案 0 :(得分:1)

创建一个选择:

你的ImagesController中的

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

你的add.ctp视图文件中的某个地方

echo $this->Form->input('album_id');