2014-09-23 70 views
1

我在我的數據庫有一個數組字段。主義的MySQL,檢查陣列中的其它陣列

如果我看我有:a:3:{i:0;s:10:"23-09-2014";i:1;s:10:"24-09-2014";i:2;s:10:"01-10-2014";}

在我的控制,我創建一個字符串與其他數組:

$array = explode(",", '01-02-2014, 02-03-2014, 03-04-2014'); 

我想知道,與createQueryBuilder()如果我的陣列的所有日期$array在我的數據庫領域...像$query->where('All_my_date_in_$array ARE IN my_array_field')

你知道一個辦法嗎?謝謝 !

+0

是這個陣列具有任何預定義structu回覆 ? – vinayhudli 2014-09-23 18:32:55

回答

2

是的,這可以通過在你的序列化數據使用通配符搜索可以在您的專欄節省像遍歷您的日期排列,並在循環中添加,其中每個數據子句,匹配,這是不好的,因爲日期應保存爲自己的真實含有這些日期類型和序列化,你應該把它保存爲通過使關係表爲多見Database normalization

$query = $em->createQueryBuilder('u'); 
$i=1; 
foreach($dates as $date){ 
if($i== 1){ 
     $query->where('u.your_column_name LIKE :date_'.$i); 
}else{ 
     $query->andWhere('u.your_column_name LIKE :date_'.$i); 
} 
     $query->setParameter('date_'.$i, '%'.$date.'%'); 
$i++; 
} 
$result= $query->getQuery() 
       ->getResult(); 

所以這將匹配your_column_name您的陣列中的每個日期and操作和結果集將返回日期