我想检查我的子/详细模型的wasChanged()
状态,就像我在hasMany
(parent)::belongsTo
(child)关系中对父/标头模型所做的那样。
我的代码看起来像这样:
$parent = Parent::updateOrCreate([ ... ], [ ... ]);
if ($parent->wasChanged()) {
// do something useful
}
foreach ($contents as $child) {
$parent->children()->updateOrCreate([ keys ],[ data ]);
// Now I want to check if the Child model named Contents was changed.
// if ($parents->children()->wasChanged()) { ... // does not work
}
我怎样才能做到这一点?
不确定$contents
做什么,但是,您总是可以做这样的事情来完成您想要完成的想法:
$parent = Parent::updateOrCreate([ keys ],[ data ]);
$parent->load('children');
if ($parent->wasChanged()) {
// do something useful
}
$parent->children()->updateOrCreate([ keys ],[ data ]);
foreach($parent->children() as $child) {
if ($child->wasChanged()) {
// do something useful
}
}
我甚至不确定这是一个正确的答案,但我最终做的事情似乎是在每次createOrUpdate()
呼叫后添加save()
呼叫。Laravel文档表明,这不是应该如何工作,但很难与经验证据争论。
$parent = Parent::updateOrCreate([ keys ],[ data ]);
if ($header->wasChanged() || $header->wasRecentlyCreated) {
// Do interesting work
}
$parent->save();
foreach ($myInterestingData as $newChildData) {
$child = $header->children()
->updateOrCreate( ... keys/values from $newChildData ...);
if ($child->wasChanged() || $child->wasRecentlyCreated) {
// Do boring work
}
$child->save();
}