2014-09-23 72 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操作和结果集将返回日期