如何在laravel dB中挂钩方法

时间:2017-09-01 05:25:02

标签: laravel laravel-eloquent

我的代码如下:

 $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
 }

我希望在orderbywhere之内添加更多内容。但是,它不起作用。 这样做的正确方法是什么?感谢

2 个答案:

答案 0 :(得分:3)

您忘记为$ 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();

希望这会有所帮助。

答案 1 :(得分:1)

你可以这样做 -

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

希望这对你有所帮助。