在没有主键的情况下将新记录插入表(CakePHP)

时间:2019-05-15 12:45:53

标签: cakephp cakephp-3.0

我需要将PhpBB与CakePHP集成。在PhpBB中,有没有主键的表phpbb_user_group:

group_id | user_id | group_leader | user_pending    

创建新用户时,我需要向该表添加新记录,但是CakePHP给我以下错误:

Cannot insert row in "phpbb_user_group" table, it has no primary key. 

我可以将具有主键的列添加到表中,但是我不愿意。更新PhpBB总是很麻烦,而且我预见到将来会出现问题,所以我宁愿不修改数据库结构。

是否可以在CakePHP中将没有主键的新记录插入表中?

1 个答案:

答案 0 :(得分:1)

您必须“手动”创建和运行INSERT语句,例如使用查询生成器,您将无法使用ORM的保存功能,因为它依赖于存在的主键。

$statement = $Table
    ->query()
    ->insert([
        'group_id',
        'user_id',
        'group_leader',
        'user_pending'
    ])
    ->values([
        'group_id' => $groupId,
        'user_id' => $userId,
        'group_leader' => $groupLeader,
        'user_pending' => $userPending
    ])
    ->execute();

$success = $statement->rowCount() === 1;
$statement->closeCursor();

另请参见