如何在 laravel dB 中挂钩方法

How to hook a method in laravel dB

我有下面的代码:

 $data = DB::table('blogs') 
        ->where('title', '=', $title);

现在,我想在它如上初始化后添加更多方法。我想在下面添加一些内容,以便将额外的位置添加到数据中。

 $input = TRUE;
 $data = DB::table('blogs') 
        ->where('title', '=', $title);

 if( $input ){
    $data->where('description','=', $description); //but then, this doesn't work
 }

我想在 if 中添加更多内容,就像 orderbywhere 一样。但是,它不起作用。 这样做的正确方法是什么?谢谢

你可以这样做 -

if(your_condition)
{
    $whereCondition = "table.description ='".$description."'";  // for any where condition
}
else
{
    $whereCondition = '1=1'; //for no where condition
}

$data = DB::table('blogs') 
          ->where('title', '=', $title)
          ->whereRaw($whereCondition)
          ->orderBy('table.column','DESC')
          ->get();

希望对您有所帮助。

您忘记将添加的条件分配给 $data

尝试下面的代码

 $input = TRUE;
 $data = DB::table('blogs') 
        ->where('title', '=', $title);

 if( $input ){
   $data = $data->where('description','=', $description); 
 }

如果需要添加更多条件:

$input1 = TRUE;

if( $input1 ){
       $data = $data->where('other_column','=', $other_var); 
     }

最后通过

获取详细信息
$data = $data->get();

希望这会有所帮助。