Laravel / SQL:如何在单个查询中从多个表中获取数据?也使用“ where”

时间:2018-06-28 12:25:15

标签: sql laravel

在Laravel App(博客/帖子)上使用搜索功能。 帖子有多种类型(每个帖子在数据库中都有一个单独的表) 像商务职位,社交生活职位等。

下面是SearchController上的搜索功能

1 0 1
0 0 0
0 0 1

}

所以基本上我的问题是还如何添加其他类型的Post表?

我的主要动机是,当某人搜索任何内容时,应从所有类型的帖子表(业务,自然,生活等)中获取结果。

3 个答案:

答案 0 :(得分:0)

您必须在两个表中都保留通用ID

注意:加入是首选方法

   $querys = DB::table('Business')->where([['Business.title','like','%'.$query.'%'],['Business.status','=',1]])
                        ->orWhere([['Business.description','like','%'.$query.'%'],['Business.status','=',1]]);

   $querys->join('socialtable','socialtable.userid','=','Business.userid'); 
   // Just join the social table
   $querys->where('socialtable.title',  'like','%'.$query.'%'); 
   $result = $querys->paginate(10);

答案 1 :(得分:0)

如果您有一个名为Book的模型,如下所示:

class Book extends Model
{
    /**
     * Get the author that wrote the book.
     */
    public function author()
    {
        return $this->belongsTo('App\Author');
    }
}

然后,您可以与这样的作者一起检索所有书籍:

$books = App\Book::with(['author'])->get();

从Laravel文档中查看Eager loading

答案 2 :(得分:0)

只需在每个字段之前添加表名

   $querys = DB::table('Business')->where([['Business.title','like','%'.$query.'%'],['Business.status','=',1]])
                        ->orWhere([['Business.description','like','%'.$query.'%'],['Business.status','=',1]]);

   $querys->join('socialtable','socialtable.userid','=','Business.userid'); 
   // Just join the social table
   $querys->where('socialtable.title',  'like','%'.$query.'%'); 
   $result = $querys->paginate(10);