【发布时间】:2021-10-08 19:17:53
【问题描述】:
首先回答我的问题。一个用户有很多contacts 和一个contact 有很多anniversaries。我想过滤即将到来的周年纪念日。到目前为止,我有这个:
$filtered = auth()->user()->contacts()->get()->each(function ($contact) {
$contact->anniversaries->filter(function ($anniversary) {
// return true or false based on a method on the anniversary model
return $anniversary->method() == true;
});
});
但这只是返回所有联系人(显然)及其所有周年纪念日,我希望在调用$anniversary->method() 时排除那些错误的联系人。
$anniversary->method() 中的内容并不重要,这只会返回 true 或 false。
当我执行以下操作时,它会起作用:
$collection = auth()->user()->anniversaries()->get();
$filtered = $collection->filter(function ($anniversary) {
return $anniversary->method() == true;
});
我只得到$anniversary->method() 确实是true 的周年纪念日。
我的问题主要是,为什么会发生这种情况,我只是想了解它,而不是如何让它工作的答案。提前感谢您提供任何见解!
【问题讨论】: