Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
requestChangeSet example
public
function
detectChangeset
(
EntityDeleteEvent
$event
)
: void
{
foreach
(
$event
->
getCommands
(
)
as
$command
)
{
if
(
!
$command
instanceof DeleteCommand
)
{
continue
;
}
if
(
$command
->
getDefinition
(
)
->
getEntityName
(
)
!== ProductReviewDefinition::ENTITY_NAME
)
{
continue
;
}
$command
->
requestChangeSet
(
)
;
}
}
public
function
onReviewDeleted
(
EntityDeletedEvent
$event
)
: void
{
foreach
(
$event
->
getWriteResults
(
)
as
$result
)
{
if
(
$result
->
getEntityName
(
)
!== ProductReviewDefinition::ENTITY_NAME
)
{
continue
;
}
$changeset
=
$result
->
getChangeSet
(
)
;
foreach
(
$event
->
getCommands
(
)
as
$command
)
{
if
(
!
$command
instanceof ChangeSetAware
)
{
continue
;
}
if
(
$command
->
getDefinition
(
)
->
getEntityName
(
)
!== OrderLineItemDefinition::ENTITY_NAME
)
{
continue
;
}
if
(
$command
instanceof DeleteCommand
)
{
$command
->
requestChangeSet
(
)
;
continue
;
}
if
(
$command
->
hasField
(
'referenced_id'
)
||
$command
->
hasField
(
'product_id'
)
||
$command
->
hasField
(
'quantity'
)
)
{
$command
->
requestChangeSet
(
)
;
}
}
}
public
function
orderPlaced
(
CheckoutOrderPlacedEvent
$event
)
: void
{
public
function
testFetchChangeSet
(
)
: void
{
$update
=
[
'id' =>
$this
->ids->
get
(
'product'
)
, 'stock' => 100
]
;
$this
->
getContainer
(
)
->
get
(
'event_dispatcher'
)
->
addListener
(
PreWriteValidationEvent::
class
,
function
DPreWriteValidationEvent
$event
)
: void
{
foreach
(
$event
->
getCommands
(
)
as
$command
)
{
if
(
!
$command
instanceof ChangeSetAware
)
{
continue
;
}
$command
->
requestChangeSet
(
)
;
}
}
)
;
$result
=
$this
->productRepository->
update
(
[
$update
]
, Context::
createDefaultContext
(
)
)
;
$changeSet
=
$this
->
getChangeSet
(
ProductDefinition::ENTITY_NAME,
$result
)
;
static
::
assertTrue
(
$changeSet
->
hasChanged
(
'stock'
)
)
;
static
::
assertEquals
(
1,
$changeSet
->
getBefore
(
'stock'
)
)
;
static
::
assertEquals
(
100,
$changeSet
->
getAfter
(
'stock'
)
)
;
}
$associatedEntities
=
$this
->
getAssociationEntities
(
)
;
foreach
(
$event
->
getCommands
(
)
as
$command
)
{
$definition
=
$command
->
getDefinition
(
)
;
$entity
=
$definition
->
getEntityName
(
)
;
if
(
!
$command
instanceof ChangeSetAware || !\
in_array
(
$entity
,
$associatedEntities
, true
)
)
{
continue
;
}
if
(
$command
instanceof DeleteCommand
)
{
$command
->
requestChangeSet
(
)
;
continue
;
}
foreach
(
$this
->
getForeignKeyFields
(
$definition
)
as
$field
)
{
if
(
$command
->
hasField
(
$field
->
getStorageName
(
)
)
)
{
$command
->
requestChangeSet
(
)
;
}
}
}
}