5

ऐसा लगता है कि ज़ेंड फ्रेमवर्क का उपयोग करके दो तालिकाओं में शामिल होने के कुछ अलग-अलग तरीके हैं, लेकिन मैंने इसे पहले कभी नहीं किया है, इसलिए मुझे नहीं पता कि यह करने का सबसे अच्छा तरीका कौन सा है।इनर करने का सबसे अच्छा तरीका ज़ेंड फ्रेमवर्क का उपयोग करके शामिल हों?

यह मैं क्या करने की कोशिश कर रहा हूँ है ...

मैं 3 मेरे डेटाबेस में तालिकाओं है:

users 
    (id , name) 
groups 
    (id , name) 
group_members 
    (id , group_id , user_id) 

मैं समूहों के लिए है कि एक उपयोगकर्ता शामिल है को देखने के लिए कोशिश कर रहा हूँ और उपयोगकर्ता को प्रदर्शित करें। यह एसक्यूएल कथन काफी काम करता है (हालांकि इसे लिखने का एक बेहतर तरीका हो सकता है)। यह केवल उन स्तंभों को लौटाता है जिनसे मैं चिंतित हूं जिनके समूह समूह और शीर्षक हैं।

SELECT groups.id, groups.title 
    FROM group_members 
     INNER JOIN groups 
     ON groups.id = group_members.group_id 
    WHERE user_id = $userId 

मैं इसे ज़ेंड फ्रेमवर्क के साथ कैसे कर सकता हूं?

उत्तर

9

अंततः यह पता लगाया कि यह कैसे करें। यदि आपके पास बेहतर तरीका है, तो कृपया मुझे बताएं।

$db = Zend_Db_Table::getDefaultAdapter(); //set in my config file 
$select = new Zend_Db_Select($db); 
$select->from('groups', array('id', 'title')) //the array specifies which columns I want returned in my result set 
    ->joinInner(
     'group_members', 
     'groups.id = group_members.group_id', 
     array()) //by specifying an empty array, I am saying that I don't care about the columns from this table 
    ->where('user_id = ?', $userId); 
$resultSet = $db->fetchAll($select); 

यह केवल आईडी और शीर्षक कॉलम के साथ एक तालिका लौटाएगा। खाली array() उन कॉलम को हटाने की कुंजी थी जिनकी मुझे परवाह नहीं थी। मैं परिणाम सेट के साथ कुछ कर सकता था।

foreach ($resultSet as $row) { 
    //do something with $row->id or $row->title 
} 
0

जुड़ने का उपयोग करने की कोई आवश्यकता नहीं है, हम एमवीसी पैटर्न के कारण के बजाय Zend_Db_Table का उपयोग कर सकते हैं। मुझे यह विचार here, # 10 फिलिप द्वारा मिला है। (शायद वे इसे "टेबल डेटा गेटवे" कहते हैं?)

+1

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, यहां उत्तर के आवश्यक हिस्सों को शामिल करना बेहतर है और प्रदान करना बेहतर है संदर्भ के लिए लिंक। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – ekad

संबंधित मुद्दे

 संबंधित मुद्दे