Laravel Nova 操作多条消息

Laravel Nova Actions Multiple messages

我可以在论坛中找到适合我的问题的解决方案。

在我的 Laravel nova 中,我有一些课程类别,如果用户想要删除其中的一些,我 创建一个删除数据的操作,但在此之前我 检查这些课程类别中是否有一些课程。 这一切都很好。我会为每一个被检查的对象执行一个 foreach 循环 类别,但如果有些是可删除的,有些不是,则 foreach 会爆发并停止。 我认为这是因为 return 语句。但是我怎样才能得到这个 return

`Action::message('Deleted!');`

Action::danger('The Course Category "'.$model->name.'" could not be deleted, it may contains some Courses!'); 

在不跳出循环的情况下完成并继续?

在循环之前设置一个变量 - 我们称它为“alldeleted”。

$alldeleted = true;

并且还为不能删除的类别设置了一个空白数组:

$undeletedcategories = array();

如果在循环中无法删除其中一个类别,请注意通过将 alldeleted 设置为 false,将类别名称添加到数组中,并使用 continue 转到循环中的下一个元素:

$alldeleted = false;
$undeletedcategories[] = $model->name;
continue;

然后,在流程结束时,查看 $alldeleted 是否为真并相应地撰写您的回复:

if($alldeleted) { 
    // return your "all deleted alright" status message here.
} else { 
    // Return the "these categories weren't deleted" status message here.
}

感谢 Giles 的快速帮助,我能够解决我的问题。我添加了另一个 foreach 来填充消息中的所有类别名称。

$alldeleted = true;
$undeletedcategories = [];
$categorie = [];

foreach ($models AS $model)
{
    $course = Course::where('category_id', $model->id)->count();
    if($course === 0)
    {
        $model->delete();
    }
    else {
        $alldeleted = false;
        $undeletedcategories[] = $model->name;
    }
}

if($alldeleted === true) {
    return Action::message('Deleted all selected Courses successfully!');
} else {
    foreach($undeletedcategories AS $cat)
    {
        $categorie[] = $cat;
    }
    return Action::danger('The following Course Category "'.implode(", ",$categorie).' " could not be deleted, it may contains some Courses!');
}