मैं केकपीएचपी 2.2.2 का उपयोग करता हूं मेरे पास 3 टेबल हैं: रेस्तरां, रसोई और रसोईघर_स्टेस्ट - एचएबीटीएम के लिए टेबल में शामिल हों।केकपीएचपी शर्तों के साथ एचएबीटीएम डेटा कैसे प्राप्त करें?
भोजनालय मॉडल में मेरे पास है:
public $hasAndBelongsToMany = array(
'Kitchen' =>
array(
'className' => 'Kitchen',
'joinTable' => 'kitchens_restaurants',
'foreignKey' => 'restaurant_id',
'associationForeignKey' => 'kitchen_id',
'unique' => true,
'conditions' => '',
'fields' => 'kitchen',
'order' => '',
'limit' => '',
'offset' => '',
),
समस्या यह है कि मैं अपने मुख्य पृष्ठ जिसमें मैं जटिल परिस्थितियों के साथ इस मॉडल से डेटा पुनः प्राप्त करने की आवश्यकता है के लिए अलग नियंत्रक है।
मैं अपने मुख्य पृष्ठ पर नियंत्रक को
public $uses = array('Restaurant');
जोड़ा गया है और यहाँ हिस्सा है जहां मैं अपने सलाह की जरूरत है आता है।
मुझे केवल उन रेस्तरां का चयन करने की आवश्यकता है जहां रसोई = $ आईडी। मैं
public function index() {
$this->set('rests', $this->Restaurant->find('all', array(
'conditions' => array('Restaurant.active' => "1", 'Kitchen.id' => "1")
)));
}
जोड़ने की कोशिश की है और मैं SQLSTATE [42S22] मिला: नहीं मिला कॉलम: 'जहां खंड' त्रुटि में 1054 अज्ञात स्तंभ। जाहिर है, मुझे "एचएबीटीएम जॉइन टेबल" से डेटा लाने की ज़रूरत है, लेकिन मुझे नहीं पता कि कैसे।
डेव, धन्यवाद। आपका कोड बहुत अच्छी तरह से काम करता है। एक छोटा सा सवाल - क्या केवल उन फ़ील्ड का चयन करना संभव है जो मैं चाहता हूं (उदा। मुझे केवल कंपनी का नाम चाहिए, और कुछ अन्य जानकारी, सभी फ़ील्ड नहीं)? मैंने फ़ंक्शन getRestaurantsByKitchenId (रेस्टोरेंट मॉडल में) में 'फ़ील्ड्स' => सरणी ('Restaurant.companyname') जोड़ने का प्रयास किया है, लेकिन इससे कोई प्रभाव नहीं पड़ता है। – user1327
@ user1327 - मदद करने के लिए खुशी हुई। हां, आपको मॉडल फ़ील्ड में 'फ़ील्ड्स' => सरणी() जोड़ने में सक्षम होना चाहिए। बस इसे 'जुड़ें' (भीतर नहीं) के समान स्तर पर रखें। आप आसानी से यह देखने के लिए डीबगकिट का उपयोग कर सकते हैं कि कौन से प्रश्न चल रहे हैं, और उस पर आधारित ट्विक कर सकते हैं। – Dave
ओह, मुझे मूर्खतापूर्ण। अब सबकुछ काम करता है जैसा मैं चाहता हूं। एक बार फिर आपका धन्यवाद। – user1327