2011-09-05 68 views
0

在我的where子句中數組有問題。我的對象中有一個數組。 YML:WHERE子句中的數組數據

Shoe 
    ShoeOne 
    sizes: 
    - 30 
    - 31 
    - 32 
    - 33 
    ... 
    ShoeTwo 
    ... 

如何選擇兩個範圍相匹配的鞋子?

試圖使用BETWEEN但數組被序列化。有沒有函數在Doctrine/MySql的序列化數組中進行一些選擇或更好地使用字符串?或者更好地使用什麼?

回答

0

這工作:

static function makeOrQueryFromArray($array, $table_name) 
    { 
     $query="("; 
     foreach ($array as $value) 
     { 
      $query .= "s.$table_name LIKE '%i:$value%' OR "; 
     } 
     return substr($query,0,strlen($query)-4).")"; 
    } 
+0

這會工作,但你不能(在'WHERE'子句中,因爲非錨定'LIKE'的)使用索引該查詢,這可能導致性能問題隨着應用程序的擴展你可能想考慮一個不同的機制,比如Lucene,或者創建一個將鞋子映射到其大小的單獨表格。 – 2012-01-10 17:59:31