क्या कोई मेरी शब्द तालिका से शब्दों को इस तरह से पुनर्प्राप्त करने के लिए क्वेरी लिखने में मेरी सहायता कर सकता है कि शब्द टाइप पिवट टेबल के माध्यम से मॉडल टाइप करने के लिए संबंधित हैं?
यहां बताया गया है कि 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 वस्तुओं की एक सरणी लौटाता है।
पढ़ने के लिए धन्यवाद, मैं किसी भी संकेत की सराहना करूंगा या बहुत मदद करूंगा।
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
में से किसी एक कुंजी का उपयोग करके पूछताछ कर रहा हूं। प्रकार तालिका की चाबियों के लिए फिर से ऊपर मेरा प्रश्न देखें।
उम्मीद है कि यह किसी की मदद करेगा। चीयर्स!
आप पिवट तालिका प्रदान कर सकते हैं:
public $belongsToMany = [
'typeswb' => [
'Yeoman\Wordbank\Models\Type',
'table'=>'yeoman_wordbank_types_pivotb',
'key' =>'word_id ',
'otherKey' => 'type_id ',
'pivot' => ['word_id ', 'type_id '],
],
];
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।