2010-06-12 10 views
6

मैं इस तरह ORM के माध्यम से एक क्वेरी चलाने के लिए कोशिश कर रहा हूँ के साथ शर्तों जहां:Kohana 3 ORM - समूहीकरण कोष्ठकों

SELECT * from table where (fname like 'string%' or lname like 'string%') 
AND (fname like 'string2%' or lname like 'string2%'); 

यहाँ मैं अब तक क्या है:

$results = ORM::factory('profiles'); 
foreach ($strings as $string) { 
    $result->where('fname', 'like', "$string%"); 
    $result->or_where('lname', 'like', "$string%"); 
} 

लेकिन यह नहीं करता है कोष्ठक के लिए खाता नहीं है। कोई विचार?

उत्तर

8

उत्तर मिला।

यह कोहाना के where_open() और where_close() विधियों के साथ किया जाता है।

+0

पैदा करेगा क्षमा DexterW, मैं अनजाने में अपने जवाब downvoted और अब यह मुझे downvote पूर्ववत नहीं दूँगा ... –

0

टिप्पणी में काम करने के लिए स्वरूपण कोड प्राप्त नहीं कर सका - बस मैं और मामले किसी में जवाब देने के लिए एक सरल उदाहरण जोड़ा जाने लगा कि यह भर आता है:

$query = DB::select() 
      ->from('some_table') 
      ->where_open() 
      ->where('column_one', '=', 1) 
      ->or_where('column_two', '=', 2) 
      ->where_close(); 

निम्नलिखित एसक्यूएल उत्पादन होगा:

SELECT * FROM some_table 
WHERE (column_one = 1 OR column_two = 2); 
7

यह मेरे लिए ठीक काम करता है।

ORM कोड नमूना

$musicslist = ORM::factory('user_music') 
      ->where_open() 
      ->where('title', 'like', '%' . $search . '%') 
      ->or_where('album', 'like', '%' . $search . '%') 
      ->or_where('artist', 'like', '%' . $search . '%') 
      ->where_close() 
      ->and_where('app_userid','=', $userid) 
      ->find_all(); 

यह SQL क्वेरी

SELECT `user_musics`.* FROM `user_musics` WHERE (`title` LIKE '%as%' OR `album` LIKE '%as%' OR `artist` LIKE '%as%') AND `app_userid` = '21' 
संबंधित मुद्दे