मैं लारवेल का उपयोग कर रहा हूं और मेरे पास दो अलग-अलग संग्रह हैं जिनमें उत्पादों की आईडी है
पहला है colorProduct
और दूसरा है tagProduct
तो मैं इन दोनों की तुलना करना चाहता हूं और उत्पादों की केवल एक ही आईडी प्राप्त करना चाहता हूं तो मैं यह कैसे कर सकता हूं?
$colorProducts = Color::where('code', $request->color)->get()->first()->products;
$tagProducts = $tag->products->where('shop_id', $shop->id);
$colorAndTagProducts = collect();
foreach ($colorProducts->toBase()->merge($tagProducts)->unique('id')->groupBy('id') as $allProducts) {
if ($allProducts->count() >= 1) {
$colorAndTagProducts[] = $allProducts->first();
}
}
यहां
$colorAndTagProducts
मुझे सभी रिकॉर्ड फॉर्म दोनों संग्रह देता है लेकिन मुझे केवल वही रिकॉर्ड चाहिए
2 जवाब
मुझे नहीं पता, अगर मैं सही ढंग से समझता हूं, लेकिन शायद इस तरह? मुझे लगता है कि रंग और उत्पाद कई से कई संबंधों में हैं। और एक से कई में उत्पाद और दुकान/टैग।
$colorId = Color::where('code', $request->color)->get()->first()->id;
$shopId = $shop->id;
$products = Product::whereHas('colors', function ($query) use ($colorId) {
$query->where('id', $colorId); //id or color_id
})->where('shop_id', $shopId)->get();
intersect()
इंटरसेक्ट विधि मूल संग्रह से किसी भी मान को हटा देती है जो दिए गए सरणी या संग्रह में मौजूद नहीं हैं। परिणामी संग्रह मूल संग्रह की कुंजियों को सुरक्षित रखेगा:
मैंने इसे इस विधि से किया था
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।
$request->color
) और जिनके पास shop_id$shop->id
है।$query->where('colors.code', $request->color)