Laravel, która metoda jest lepsza

0

Witam, cały czas określone akcje robiłem w ten sposób

public function destroy(CommentArticle $commentArticle){
        if ($commentArticle->user_id != Auth::id()){
            return response()->json([
                'error' => true
            ], 403);
        }

        CommentArticle::where('id', $commentArticle->id)
            ->where('user_id', Auth::id())
            ->delete();

        ReplyCommentArticle::where('comment_id', $commentArticle->id)->delete();

        return response()->json([
            'error' => false
        ], 200);
    }

lecz ostatnio pomyślałem że można to zrobić w ten sposób

 public function destroy(CommentArticle $commentArticle){
        if ($commentArticle->user_id != Auth::id()){
            return response()->json([
                'error' => true
            ], 403);
        }

        CommentArticle::where('id', $commentArticle->id)
            ->where('user_id', Auth::id())
            ->delete();

        $reply = new ReplyCommentArticle();
        $reply->delete($commentArticle->id);

        return response()->json([
            'error' => false
        ], 200);
    }

``` myślę że drugi sposób jest nieco lepszy jednak nie mam co do tego pewności
0

Zamiast robić 2x where, scal je do jednego w arrayu.

2

żaden. Nie mówię by ich nie używać ale skoro chcesz najlepszy to ci pokaże. Po pierwsze skoro już używasz route model binding to dodaj do tego używanie polices. Wtedy tam zostanie sprawdzone czy ktoś ma uprawnienia do usuwania tego komentarza.

Ok. Usunęliśmy potrzebę stosowania warunku oraz pierwszego ifa. Zakładam, że posiadasz relację utworzoną w modelu, no to możemy całość skrócić do:

$commentArticle->replyCommentArticle()->delete();
$commentArticle->delete();

Jakbyś jeszcze zrobił relacje po stronie bazy z onDelete('cascade') to byś mógł zostawić tylko jedną linijkę.

0

Jw - połowa kodu do Policies, a skoro usunięcie komentarza ma usunąć wszystkie relacje do niego to podpiąłbym to do Eloquent events.

1 użytkowników online, w tym zalogowanych: 0, gości: 1