如何在Laravel中使用contains on collection

时间:2018-11-15 17:14:24

标签: laravel eloquent

所以我试图检查我的engagements集合中的记录是否包含我要删除的value记录的匹配status

如果engagements包含匹配的value,我希望它返回响应而不删除记录。

但是,似乎返回一个匹配的值,而不管实际上是否存在。我已经检查了该集合,以确保status集合中不存在要提交删除的engagements,所以我不确定自己做错了什么。

这是控制者

public function destroy(Status $status)
    {
        $statusToDelete = Status::where('id', $status->id)->first();


        $engagements = Engagement::where('workflow_id', $statusToDelete->workflow_id)->get();

        if($engagements->containsStrict('status', $statusToDelete->status)) {
            return response('Status Is In Use', 401);
        };

        $statusToDelete->delete();

        return response('Status Has Been Deleted', 200);
    }

1 个答案:

答案 0 :(得分:0)

您可以尝试:

$engagements->contains(function ($engagement) use ($statusToDelete) {
    return $engagement->status->status == $statusToDelete->status;
});

假设Engagement具有Status,而Status具有属性status