CakePHP - 我应该如何布置和命名我的表

时间:2013-02-26 01:45:40

标签: php database cakephp foreign-keys

这是一首歌曲和歌词数据库。我正在尝试从我的数据库中烘焙一个应用程序,看起来像这样:(每个表都有一个ID,我只是把它留了......)

songs
    song_name

artists
    artist_name

songs_singers
    artist_id (FOREIGN KEY artists.id)
    song_id (FOREIGN KEY songs.id)

songs_writers
    artist_id (FOREIGN KEY artists.id)
    song_id (FOREIGN KEY songs.id)

song_views
    song_id (FOREIGN KEY songs.id)

videos
    song_id (FOREIGN KEY songs.id)

video_views
    video_id (FOREIGN KEY videos.id)

作家和歌手都重叠,即一些作家唱歌,一些歌手写作。

当我烘焙歌曲表时,我收到此错误:     错误:在数据源默认值中找不到模型Singer的表歌手。

我认为问题在于CakePHP希望我为歌手创建一个新模型,所以我最终必须在新表歌手中复制作家和歌手的名字。我只想要存储在艺术家中的名称,并将song_singers和song_writers链接到具有外键ID的表。

歌曲有很多:

  • 视图

  • 视频

视频有很多:

  • 视图

作家和歌手都有很多:

  • 歌曲

我该怎么办?

编辑:这是模型SongsSinger。


class SongsSinger extends AppModel {

public $validate = array(
    'song_id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
            //'message' => 'Your custom message here',
            //'allowEmpty' => false,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
    'artist_id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
            //'message' => 'Your custom message here',
            //'allowEmpty' => false,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            //'on' => 'create', // Limit validation to 'create' or 'update' operations
        ),
    ),
);


public $belongsTo = array(
    'Song' => array(
        'className' => 'Song',
        'foreignKey' => 'song_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Artist' => array(
        'className' => 'Artist',
        'foreignKey' => 'artist_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
}

1 个答案:

答案 0 :(得分:0)

你没有任何歌手(你称他们为艺术家)。

您的数据库应该是:

songs_artists
    artist_id (FOREIGN KEY artists.id)
    song_id (FOREIGN KEY songs.id)