क्या कोई मेरी शब्द तालिका से शब्दों को इस तरह से पुनर्प्राप्त करने के लिए क्वेरी लिखने में मेरी सहायता कर सकता है कि शब्द टाइप पिवट टेबल के माध्यम से मॉडल टाइप करने के लिए संबंधित हैं?

यहां बताया गया है कि Word.php में संबंध कैसा दिखता है

 public $belongsToMany = [
    'typeswb' => [
        'Yeoman\Wordbank\Models\Type',
        'table' => 'yeoman_wordbank_types_pivotb',
        'order' => 'typesofwordbank'
    ]
];

यहां बताया गया है कि टाइप टेबल कैसा दिखता है

    mysql> select * from yeoman_wordbank_types;
+----+--------------------+--------------------+
| id | typesofwordbank    | slugoftypes        |
+----+--------------------+--------------------+
|  1 | Common Words       | common-words       |
|  2 | Common Expressions | common-expressions |
|  3 | Common Proverbs    | common-proverbs    |
|  4 | Common Idioms      | common-idioms      |
+----+--------------------+--------------------+
4 rows in set (0.00 sec)

और पिवट टेबल किस प्रकार की दिखती है

mysql> select * from yeoman_wordbank_types_pivotb;
+---------+---------+
| word_id | type_id |
+---------+---------+
|      18 |       2 |
|       5 |       4 |
|       9 |       3 |
|      19 |       1 |
|      31 |       1 |
+---------+---------+
5 rows in set (0.00 sec)

जैसा कि आप देख सकते हैं type_id, words_id से जुड़े हुए हैं। जहां types_id's प्रकार तालिका से हैं और words_id's शब्द तालिका से हैं।

मुझे types_id का उपयोग करके शब्द प्राप्त करने का तरीका खोजने की आवश्यकता है।

मैंने निम्नलिखित करने की कोशिश की है

// $query = Word::all();
// foreach ($query->typeswb as $typeswb) {
   // $queryy = $typeswb->pivot->type_id = 1;
// }

और उस तरह का कुछ अन्य संयोजन लेकिन सब व्यर्थ है, अजीब तरह से मुझे इस पर Word::find(1) शून्य मिलता है जबकि Word::all() संग्रह में 6 वस्तुओं की एक सरणी लौटाता है।

पढ़ने के लिए धन्यवाद, मैं किसी भी संकेत की सराहना करूंगा या बहुत मदद करूंगा।

1
Danish 30 जून 2017, 14:08

2 जवाब

सबसे बढ़िया उत्तर

ठीक है तो मैंने इसे हल किया, आम तौर पर बिल्डर घटक के माध्यम से, यह कार्यक्षमता हासिल करना बहुत आसान है लेकिन यह स्पष्ट नहीं था कि मेरे अपने घटक में से किसी एक में खुद को कैसे किया जाए। तो, यहां बताया गया है कि मैंने इसे कैसे हल किया:

$query = Word::whereHas('typeswb', function($q)
         {
             $q->where('type_id', '=', post('typesofwordsearch')); //post('typesofwordsearch') return integer which are id's of types according to the table
         })->limit(5)->get();

यह कैसे काम कर रहा है, इसका विश्लेषण:

तो, एक और तरीका हो सकता है लेकिन लंबे समय तक कोशिश करने के बाद, यह काम कर गया।

सबसे पहले मैं अपने वर्ड मॉडल का उपयोग कर रहा हूं जहां शब्द मॉडल में, मेरे पास typeswb है जो belongToMany संबंध को परिभाषित कर रहा है (उसके लिए प्रश्न देखें)। मैं और अधिक के लिए whereHas इसे पढ़ें का उपयोग कर रहा हूं उस पर जानकारी। मूल रूप से wherehas का उपयोग करके मैं क्वेरी को संबंध के साथ देखने का निर्देश दे रहा हूं। बाद में, फंक्शन क्लोजर में, मैं अपनी टाइप टेबल यानी type_id में से किसी एक कुंजी का उपयोग करके पूछताछ कर रहा हूं। प्रकार तालिका की चाबियों के लिए फिर से ऊपर मेरा प्रश्न देखें।

उम्मीद है कि यह किसी की मदद करेगा। चीयर्स!

0
Danish 2 जुलाई 2017, 16:06

आप पिवट तालिका प्रदान कर सकते हैं:

public $belongsToMany = [                                                                                                                                                                                      
        'typeswb' => [                                                                                                                                                                                                
        'Yeoman\Wordbank\Models\Type',                                                                                                                                                                      
        'table'=>'yeoman_wordbank_types_pivotb',                                                                                                                                                               
        'key' =>'word_id ',                                                                                                                                                                                         
        'otherKey' => 'type_id ',                                                                                                                                                                                   
        'pivot'    => ['word_id ', 'type_id '],                                                                                                                                                                      
        ],                                                                                                                                                                                                         

    ];
0
user2599458 30 जून 2017, 16:48