如何在laravel查询中使用or-inside-where

ztigrdn8  于 2021-06-24  发布在  Mysql
关注(0)|答案(7)|浏览(320)

我是新来拉威尔,我需要帮助查询拉威尔
我的自定义查询

$sql1="SELECT * FROM blogs
    WHERE
    ('$title'=''  OR title='$title')
    AND
    ('$body'='' OR body='$body')";

我创建了一个laravel构建查询,但不知道如何放置或在where和put括号中

$posts =  Blog::where('title','LIKE',"%{$title}%")
                            ->Where('body', 'LIKE',"%{$body}%")
                            ->offset($start)
                            ->limit($limit)
                            ->orderBy($order,$dir)
                            ->get();
i7uaboj4

i7uaboj41#

使用 ->orWhere() 代码。
注意:你也可以使用魔术的方法

->whereAgeOrPhone(18, 123456789);
rqqzpn5f

rqqzpn5f2#

$posts =  Blog::where(function($q) use($title){
              $q->where('title','')->orWhere('title',$title);
         })->where(function($q) use($body){
            $q->where('body','')->orWhere('body',$body);
         })->offset($start)
         ->limit($limit)
         ->orderBy($order,$dir)
         ->get();
drnojrws

drnojrws3#

使用orwhere()

$blogs= DB::table('Blog')
                ->where('title', 'LIKE', '%{$title}%')
                ->orWhere('body','LIKE', '%{$body}%')
                ->offset($start)
                ->limit($limit)
                ->orderBy($order,$dir)
                ->get();

如需更多查询,请访问此处

zvokhttg

zvokhttg4#

您的查询应该是:

$result = Blog::where(function($query) use ($title, $body){
      $query->where(
              ["title" => $title, "body"=>$body]
          )->orWhere(
              ["title"=>"", "body"=>""]
          ); 
})
->offset($start)
->limit($limit)
->orderBy($order,$dir)
->get();
5uzkadbs

5uzkadbs5#

我想或者你要找的是什么,基于我想你需要的自定义查询 = 而不是 like 除非你是这么想的,否则我想应该是这样的:

->where('title', '=', $title)
->orWhere('title', '=', '');
vaj7vani

vaj7vani6#

只是使用 orWhere() ```
$posts = Blog::where('title', $title)
->orWhere('title', $otherTitle)
->orderBy($order, $dir)
->get();

ymdaylpp

ymdaylpp7#

希望这能给你一个想法:)

$posts =  Blog::where(function ($query) use($title) {
                         $query->where('title', 'LIKE', "%{$title}%")
                               ->orWhere('title', '=', '$title');
              })
            ->orWhere(function ($query) use($body) {
                       $query->where('body', 'LIKE', "%{$body}%")
                             ->orWhere('body', '=', '$body');
                             })
             ->offset($start)
             ->limit($limit)
             ->orderBy($order,$dir)
             ->get();

未测试。。。

相关问题