मैं लारवेल का उपयोग कर रहा हूं और मेरे पास दो अलग-अलग संग्रह हैं जिनमें उत्पादों की आईडी है

पहला है 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

मुझे सभी रिकॉर्ड फॉर्म दोनों संग्रह देता है लेकिन मुझे केवल वही रिकॉर्ड चाहिए

0
Hassan 3 अप्रैल 2020, 15:56

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();
0
Autista_z 3 अप्रैल 2020, 16:47
मैं सिर्फ दो संग्रहों की तुलना करना चाहता हूं
 – 
Hassan
3 अप्रैल 2020, 17:08
"तुलना" से आपका क्या मतलब है? वे आइटम दिखाएं जो एक संग्रह में हैं, लेकिन दूसरे में नहीं हैं? या आप केवल आइटम चाहते हैं, जो दोनों संग्रहों में हैं?
 – 
Autista_z
3 अप्रैल 2020, 17:21
यदि आप केवल आइटम चाहते हैं, जो दोनों संग्रहों में हैं, तो मेरा उत्तर सही है। यह उन सभी उत्पादों का चयन करेगा जिनके अनुरोध में रंग सेट है ($request->color) और जिनके पास shop_id $shop->id है।
 – 
Autista_z
3 अप्रैल 2020, 17:24
1
आप बस जहाँ हैस का उपयोग कर सकते हैं $query->where('colors.code', $request->color)
 – 
TsaiKoga
3 अप्रैल 2020, 18:19
intersect()

इंटरसेक्ट विधि मूल संग्रह से किसी भी मान को हटा देती है जो दिए गए सरणी या संग्रह में मौजूद नहीं हैं। परिणामी संग्रह मूल संग्रह की कुंजियों को सुरक्षित रखेगा:

मैंने इसे इस विधि से किया था

0
Hassan 3 अप्रैल 2020, 17:21