Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba,

$order = Order::with('orderItems', 'orderShippingFee')
                    ->whereHas('orderItems', function ($q) {
                        $q->when(!auth()->user()->hasRole('owner'), function ($q) {
                            $q->where('seller_id', auth()->user()->parent_id);
                        }, function ($q) {
                            $q->where('seller_id', auth()->user()->id);
                        });
                    })
                    ->whereHas('orderShippingFee', function ($q) {
                        $q->when(!auth()->user()->hasRole('owner'), function ($q) {
                            $q->where('seller_id', auth()->user()->parent_id);
                        }, function ($q) {
                            $q->where('seller_id', auth()->user()->id);
                        });
                    })
                    ->where('uuid', $uuid)
                    ->first();

Bu şekilde yazdığım zaman herhangi bir hata yok fakat seller_id auth id eşit olmayan varsa onlarda geliyor. Aşağıdaki gibi yazarsam işe yarıyor. İkisi arasındaki fark nedir? Üstteki kodun da çalışması gerekmiyor?

$order = Order::with(['orderItems' => function($query) {
                    $query->when(!auth()->user()->hasRole('owner'), function ($q) {
                            $q->where('seller_id', auth()->user()->parent_id);
                        }, function ($q) {
                            $q->where('seller_id', auth()->user()->id);
                        });
                    }, 'orderShippingFee' => function($query) {
                        $query->when(!auth()->user()->hasRole('owner'), function ($q) {
                            $q->where('seller_id', auth()->user()->parent_id);
                        }, function ($q) {
                            $q->where('seller_id', auth()->user()->id);
                        });
                    }])
                    ->where('uuid', $uuid)
                    ->first();

    gundogduyakici Üstteki kod Order modelini filtreliyor, aşağıdaki ise ilişkileri. Alttaki kodda where('uuid', $uuid) şartına uyan Order'ı daima alırsınız, ilişkiler filtrelenir ama üstteki kodda Order modelini yazdığınız whereHas'e göre alırsınız ya da almazsınız.

      mgsmus yani üstteki kodda yine order'a şart koyuyoruz o şarta uyan orderItems ilişkileri geliyor? doğru mu anladım abi

        gundogduyakici Üstteki kodda Order modelini ilişkiye göre filtreliyorsunuz, ilişkileri değil. Mesela sadece bugün sipariş vermiş kullanıcılar:

        $users = User::whereHas('orders', function($query) {
            $query->whereDate('created_at', today());
        })
            ->get();

        Gördüğünüz gibi burada ilişki değil User modelinin kendisi filtreleniyor.