在 Laravel 5.3 中通过 PHP IF 雄辩查询添加更多条件

问题描述 投票:0回答:1

如果我需要创建一个会根据 PHP 参数而变化的查询,如何逐个挂载 eloquent 的查询?

就像这个例子:

 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();

Adam 的回答就是这么简单吗:

 $aulas = Aula
     ::select('fields');

 if($id_curso > 0)
     $aulas->where('id_curso', $id_curso);
            
 $aulas->where('condiotion_1');
    
 return $aulas->get();

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

php laravel-5 eloquent
1个回答
1
投票

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

$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();
© www.soinside.com 2019 - 2024. All rights reserved.