محمد
4 سال پیش توسط محمد مطرح شد
0 پاسخ

استفاده از scope در join ها

سلام یک سوال دارم ممنون می شم راهنمایی کنید.

من داخل مدل خودم یک Global Scopes ساختم ولی در استفاده از اون داخل join() به مشکل خوردم و شروطی که داخل scope گذاشتم اعمال نمی شن . ممنون می شم بفرمایید مشکلم کجاست

اسکوپ

    protected static function booted()
    {
        parent::booted();

        static::addGlobalScope('rate.index', function (Builder $builder) {
            $builder->where('rates.index', '=', 1);
        });
    }

    protected static function booted()
    {
        parent::booted();

        static::addGlobalScope('image.index', function (Builder $builder) {
            $builder->where('product_images.index', '=', 1);
        });
    }

query :

$products = Product::join('rates', 'products.id', '=', 'rates.product_id')
        ->join('product_images', 'products.id', '=', 'product_images.product_id')
        ->select([
            'products.id', 'products.name', 'products.slug',
            'product_images.url', 'product_images.alt',
            'rates.price', 'rates.discount', 'rates.discountExpirationDate'
        ])
        ->where([
            ['product_images.index', '=', 1],
            ['rates.index', '=', 1]
        ])
        ->whereIn('products.id', $extractSession['productIds'])
        ->get();

شروط where رو باید حتما بزارم وگرنه scope کار نمی کنه.


ثبت پرسش جدید

به همدیگه کمک کنیم

به محمد کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام