1

歌と歌詞のデータベースです。次のようなデータベースからアプリを作成しようとしています: (すべてのテーブルには 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)

作家と歌手は重複しています。つまり、一部の作家は歌い、一部の歌手は書きます。

曲のテーブルをベイクすると、次の エラーが表示されます。

問題は、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' => ''
    )
);
}
4

1 に答える 1

0

あなたには歌手がいません(あなたは彼らをアーティストと呼んでいました)。

データベースは次のようにする必要があります。

songs_artists
    artist_id (FOREIGN KEY artists.id)
    song_id (FOREIGN KEY songs.id)
于 2013-02-26T18:12:33.747 に答える