2017-04-17 99 views
1

我正在从数据库的表中调用数据。我添加了WHERE语句来过滤从今天直到14天前注册的数据。以下是我的代码示例:如何从今天的日期和之前获取数据?

$data=DB::connection('oracle_mybase')->table('my_dndomain') 
      ->where('my_dndomain.domain_status','=',86) 
      ->where('my_dndomain.domain_reg_date','>=',DB::raw('to_date(sysdate)-14')) 
      ->where('my_dndomain.domain_extension','=','.com.my') 
      ->orwhere('my_dndomain.domain_extension','=','.org.my') 
      ->orwhere('my_dndomain.domain_extension','=','.net.my') 
      ->orwhere('my_dndomain.domain_extension','=','.my') 
      ->get(); 

但是我无法获取数据。

+0

您应该采取雄辩模型。 – Hedam

回答

2

可以使用->whereBetween('my_dndomain.domain_reg_date',array($now->subDays(14), $now))

$now = Carbon\Carbon::now(); 
$twoweeksago = Carbon\Carbon::now()->subDay(14); 

$data=DB::connection('oracle_mybase')->table('my_dndomain') 
      ->where('my_dndomain.domain_status','=',86) 
      ->whereBetween('my_dndomain.domain_reg_date',array($twoweeksago, $now)) 
      ->where('my_dndomain.domain_extension','=','.com.my') 
      ->orwhere('my_dndomain.domain_extension','=','.org.my') 
      ->orwhere('my_dndomain.domain_extension','=','.net.my') 
      ->orwhere('my_dndomain.domain_extension','=','.my') 
      ->whereDate('field_name', '<', $now) 
      ->get(); 
+0

这是行不通的,因为'$ now-> subDays(14)'会改变'$ now'对象。你需要再次调用'now()'来获得今天的日期。 –

+0

哦,你是正确的编辑我的答案。 –

+0

是的,更新的代码将起作用。 –

3

您可以使用whereBetween

whereBetween('date', array(Carbon::now()->subWeeks(2), Carbon::now())) 
+1

这是这里唯一的工作解决方案。 –

相关问题