挿入されたエンティティのIDを取得するにはどうすればよいですか?
hook_ENTITY_TYPE_presave()
とhook_ENTITY_TYPE_insert()
を使用しようとしていますが、どちらでもエンティティIDを取得できません。
hook_ENTITY_TYPE_presave()
では、次のコードを使用しました。
if ($entity->isNew()) {
print $entity->id();
}
IDはhook_ENTITY_TYPE_presave()
では使用できません(preはbeforeを意味するため、保存されていないため、データベースにはまだIDが割り当てられていません)、ただし、hook_ENTITY_TYPE_insert()
で確実に使用できます。
これは機能します、例えば:
function MODULE_node_insert(NodeInterface $node) {
// No need to check `isNew()`; if it's in an insert hook, it's new.
$nid = $node->id();
}
私は同様のことをする必要がありました-これは私のために働きました:
function your_module_node_insert($node) {
if ($node->getType() == 'your_node') {
$node->setTitle('New entity ' . $node->id()); // to update title with node id
$node->field_test = 'Id' . $node->id(); // or, to update a text field with node id
$node->save();
}
}