2009-12-04 5 views
24

आम तौर पर, यह मेरे लिए काम करेगा:ज़ेंड फ्रेमवर्क: तालिका पंक्ति को कैसे हटाएं जहां कई चीजें सत्य हैं?

$db = Zend_Db_Table::getDefaultAdapter(); 
$where = $db->quoteInto('id = ?', $id); 
$db->delete('tablename', $where); 

लेकिन मैं दो आईडी से मेल करने के लिए है। इसलिए मुझे वास्तव में यह नहीं पता कि इसे कैसे बनाया जाए।

WHERE first_id = 'id1' AND second_id = 'id2' 

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

उत्तर

57

जेसन डब्ल्यू के जवाब पर विस्तार करने के लिए:

वास्तव में सुनिश्चित नहीं हैं कि तीसरा खंड कह रहा है

इसका मतलब है कि आप यह कर सकते हैं:

$db->delete('tablename', array(
    'first_id = ?' => $first_id, 
    'second_id = ?' => $second_id 
)); 

और एडाप्टर आपके लिए सबकुछ उद्धृत करेगा।

मुझे ऐसा नहीं लगता कि दस्तावेज बहुत स्पष्ट है।

+0

हमेशा एपीआई की जांच करें - मैनुअल बस पर्याप्त विवरण में सब कुछ शामिल नहीं कर सकता –

+22

एक एपीआई जो आपको सरल चीजों को करने के लिए इंजीनियर को रिवर्स करने के लिए मजबूर करती है वह एक क्रैपी एपीआई है। –

+0

वास्तव में ज़ेन फ्रेमवर्क का उपयोग करने के लिए, @AlanStorm, वास्तव में आपको स्रोत कोड में गोता लगाने की ज़रूरत है। एक खड़ी और निराशाजनक सीखने की वक्र के लिए बनाता है। – David

20
पर zend manual से

हटाने():

आप दूसरा तर्क को छोड़ देते हैं, तो नतीजा यह है कि डेटाबेस तालिका में सभी पंक्तियों को नष्ट कर दिया जाता है।

आप दूसरा तर्क के रूप में तार की एक सरणी प्रदान करते हैं, तो ये तार कर रहे हैं एक अभिव्यक्ति द्वारा और ऑपरेटरों अलग में शब्दों के रूप में एक साथ शामिल हो गए।

आप दूसरा तर्क के रूप में सरणियों की एक सरणी प्रदान करते हैं, मान स्वचालित रूप से कुंजी में उद्धृत किया जाएगा। इसके बाद शब्दों के साथ मिलकर, ऑपरेटरों द्वारा अलग किया जाएगा।

नहीं बिल्कुल यकीन है कि क्या 3 खंड कह रहा है, लेकिन 2 तात्पर्य आप कर सकते हैं कि:

$where = array(); 
$where[] = $db->quoteInto('first_id = ?', $first_id); 
$where[] = $db->quoteInto('second_id = ?', $second_id); 
$db->delete('tablename', $where); 
+0

यह करने के लिए बेहतर तरीका है कि! – markus

1

आप कौन सी क्लास Zend_Db_Table_Abstract प्रदान कर रहा है मॉडल में हैं, तो आप अलग संरचना का उपयोग करना:

class Yourmodel extends Zend_Db_Table_Abstract { 
    protected $_name = 'tablename'; 
    protected $_primary = 'primarykey'; 
    public function remove($first_id, $second_id) { 
     $where = array(); 
     $where[] = $this->getAdapter()->quoteInto('first_id = ?', $first_id); 
     $where[] = $this->getAdapter()->quoteInto('second_id = ?', $second_id); 
     $this->delete($where); 
    } 
} 
संबंधित मुद्दे