在Laravel 5.3中增加了更多的条件


Add more conditions in Laravel 5.3 eloquent query by PHP IFs

在这种情况下,我需要创建一个查询,将根据php参数的变化,我怎么能挂载雄辩的查询一块一块?

就像在这个例子中:

 if($id_curso > 0)
     $aulas = Aula
         ::select( 'fields' )
         ->where('id_curso', 3)
         ->where('condition_1');
 else
     $aulas = Aula
         ::select( 'fields' )
         ->where('condition_1');
 return $aulas->get();

这样做是有效果的,但是当我改变SELECT或WHERE时,我必须在这两种情况下都改变,是否有一种方法可以这样做:

 $aulas = Aula
    ::select( 'fields' );
 if($id_curso > 0)
    $aulas.= Aula::where('id_curso', 3);
 $aulas.= Aula::where('condition_1');
 return $aulas->get();

就像亚当回答的那样,很简单吗?

 $aulas = Aula
     ::select('fields');
 if($id_curso > 0)
     $aulas->where('id_curso', $id_curso);
 $aulas->where('condiotion_1');
 return $aulas->get();

$aulas是一个对象,我认为它是查询字符串,所以谢谢Adam。

根据我的记忆,你可以这样做:

$aulas = Aula::select( 'fields' );
if($id_curso > 0) {
    $aulas->where('id_curso', 3);
} else {
    $aulas->where('condition_1');
}
$aulas->get();

如果这不起作用,您可以这样做(不确定它是否会从模型运行或必须从DB::table(),您将需要"使用DB;"):

$query = DB::select('table');
if($id_curso > 0) {
    $query->where('id_curso', 3);
} else {
    $query->where('condition_1');
}
$query->get();