CakePHP如何处理带有/不带'id'字段的HABTM表?

dav*_*gr8 3 php sql cakephp

CakePHP如何处理没有id列的表?

HABTM是一个"拥有并且属于很多"的表,这意味着多对多的数据库关系

我正在尝试保存一些关系数据,但是Cake想要"SELECT LAST_INSERT_ID()",但是它试图保存的表没有id列,因此id用于不同的表.

具体来说,我有"游戏"和"玩家"的表格,以及一个名为"game_players"的关系表.game_players有字段game_id和player_id,并且在这张桌子上我无法保存关系数据.

澄清一下:这是导致问题的game_player表.该表没有,也没有id字段.它只存储玩家和游戏之间的关系,主键是(game_id,player_id)

CakePHP如何处理这种情况/关系?

小智 8

var $primaryKey = 'example_id'; $ primaryKey是你在寻找什么.

只需将其放在模型类上即可.


nei*_*kes 5

游戏HABTM播放器,反之亦然?如果是这样,您的联接表games_players上不应该有ID字段.你应该能够通过调用带有数据数据的游戏保存来保存数据

$this->Game->save(array(
  'Player'=>array(
    'Player'=>array(
      1,4,5,9 // Player IDs
    )
  )
));
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Cake不会尝试获取最后一个插入ID.

但是,如果游戏没有HABTM播放器,并且您直接在模型GamePlayer上调用save,它应该有一个ID字段以符合Cake约定.