Как использовать Содержится на коллекции в Laravel - PullRequest
0 голосов
/ 15 ноября 2018

Поэтому я пытаюсь проверить, содержит ли запись из моей коллекции 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 голосов
/ 15 ноября 2018

Вы можете попробовать:

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

Предполагая, что Engagement имеет Status, а Status имеет свойство status

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...