【问题标题】:Get Last Inserted Id in Doctrine and Insert that Id to its child table在 Doctrine 中获取最后插入的 Id 并将该 Id 插入其子表
【发布时间】:2013-10-22 05:22:37
【问题描述】:

我在 2 个相关表中插入记录,当在父表中插入记录时,我得到它最后插入的 id(工作正常),但是当我将此 id 提供给它的子表时,它接受它作为空值.

这是我的代码:

$obj_users = new Users();
$obj_users->setFirst_name('ABC');
$entityManager->persist($obj_users);
$entityManager->flush();
echo $USERID = $obj_users->getId_user(); //this is working fine



        $obj_serviceprovider = new ServiceProvider();
        $obj_serviceprovider->setUser($USERID); // here it goes empty

        $entityManager->persist($obj_serviceprovider);
        $entityManager->flush();

我的代码有什么问题?

【问题讨论】:

  • 真的收到 $USERID 了吗?你检查了吗?
  • 它是否正在接收 $USERID
  • 如果我向 $obj_serviceprovider->setUser(12312) 提供硬编码值;它仍然不执行插入]

标签: php symfony orm doctrine-orm doctrine


【解决方案1】:

试试这样:

$obj_users = new Users();
$obj_users->setFirst_name('ABC');
$entityManager->persist($obj_users);
$entityManager->flush();
echo $USERID = $obj_users->getId_user();

        $obj_serviceprovider = new ServiceProvider();
        $obj_serviceprovider->setUser($obj_users);

        $entityManager->persist($obj_serviceprovider);
        $entityManager->flush();

因为学说存储了 id 但在定义关系的孩子时需要一个对象

【讨论】:

  • 不工作,如果我提供一个自定义值,如:$obj_serviceprovider->setUser(12312);它仍然不执行插入
  • 如果在 UsersServiceProvider 实体之间定义了关系,则 setUser() 需要用户类型的参数
  • 你能举个例子吗?
  • 查看我对您的代码所做的更改... $obj_serviceprovider->setUser($obj_users);你没注意到吗?我不只是重新发布您的代码
  • 我确实注意到了它,但它也不起作用,就像我说的,如果我提供一个硬编码值,比如..... $obj_serviceprovider->setUser(123);.... 它仍然不执行插入
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2012-05-27
  • 1970-01-01
相关资源
最近更新 更多