php - जाँच करने के लिए कैसे है महान रिलायंस रिकॉर्ड सुविख्यात लार्वेल में खाली है




sql laravel eloquent (3)

अगर मैं आपको सही ढंग से समझा और आपको doesntHave() प्राप्त करना है जो कि categoryItem नहीं है, तो आप doesntHave() विधि का उपयोग करना चाहते हैं:

Recipes::where('name', 'like', '%'.$item.'%')
       ->doesntHave('categoryItem')
       ->get();

मुझे लगता है कि categoryItem Item परिभाषित परिभाषा है क्योंकि आप इसे with() विधि के with() उपयोग करने का प्रयास कर रहे हैं

मुझे उन अभिलेख प्राप्त करने की आवश्यकता है जिनके साथ इसमें शामिल नहीं हुआ है, इस पर मेरी क्वेरी कई सारणी है

$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%')
                    ->with(['categoryItem'])
                    ->get();

और मेरा उत्पादन है

Array
(
    [0] => Array
        (
            [id] => 1
            [category_item] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [foodable_id] => 1
                            [foodable_type] => Recipes
                            [created_at] => 2017-04-14 16:18:22   
                        )

                )

        )

    [1] => Array
        (
            [id] => 4
            [category_item] => Array
                (
                )

        )

)

मैं उन रिकॉर्ड्स प्राप्त करना चाहता हूं जिनके पास खाली श्रेणी_आइटम विवरण है। उदाहरण के लिए, मैं सूचकांक 1 रिकॉर्ड प्राप्त करना चाहता हूं ताकि मैं क्वेरी के साथ स्थिति कैसे दे सकूं


हैलो शायद यह मदद कर सकता है अपनी फ़ाइल के शीर्ष पर जोड़ने के लिए न भूलें:

use DB;

और आपका परिणाम ऐसा कुछ होगा

$result = Recipes::select('id')->where("name", 'like', '%' . $item . '%') ->whereHas('categoryItem', function($q) { $q->where(DB::raw('count(*)),'>', 0); })->get();

मैंने गिनती कार्य की उम्मीद नहीं की, यह काम करता है, इसके साथ गुड लक


isset() बहुआयामी सरणी के लिए भी परीक्षण की विध्वंसक विधि है। जब तक आपको यह पता न हो कि वास्तव में कौन सा आयाम गुम है, तो कुछ ऐसा है

isset($arr[1][2][3])

पूरी तरह स्वीकार्य है, भले ही [1] और [2] तत्व वहां न हों (3 तब तक मौजूद नहीं हो सकते जब तक कि 1 और 2 वहां न हों)।

हालांकि, अगर आपके पास है

$arr['a'] = null;

फिर

isset($arr['a']); // false
array_key_exists('a', $arr); // true

टिप्पणी अनुवर्ती:

शायद यह समानता मदद करेगा। एक कार्डबोर्ड बॉक्स के रूप में एक PHP चर (एक वास्तविक चर, एक सरणी तत्व, आदि ...) के बारे में सोचें:

  • isset() बॉक्स के अंदर दिखता है और आंकड़े बताता है कि बॉक्स की सामग्री को उस चीज़ पर टाइपकास्ट किया जा सकता है जो "शून्य नहीं है"। यह परवाह नहीं है कि बॉक्स मौजूद है या नहीं - यह केवल बॉक्स की सामग्री की परवाह करता है। यदि बॉक्स मौजूद नहीं है, तो इसमें स्पष्ट रूप से कुछ भी शामिल नहीं हो सकता है।
  • array_key_exists() जांचता है कि बॉक्स स्वयं मौजूद है या नहीं। बॉक्स की सामग्री अप्रासंगिक है, यह कार्डबोर्ड के निशान की जांच कर रही है।




php sql laravel eloquent