Laravel搜索';喜欢';在两个表中查询


Laravel search 'LIKE' query in two tables

我目前正在尝试设置一个搜索栏,用于筛选两个表的结果,即图书类别

我已经为两种型号建立了关系,其中:

Book.php(型号)(表:id、b_name、b_author、cat_id)

public function bookCategory()
{
  return $this->belongsTo('Category', 'cat_id', 'id');
}

Category.php(模型)(表:id,类别名称)

public function book()
{
  return $this->hasMany('Book', 'cat_id', 'id');
}

BookController.php

public function getFilterBooks($input)
{
  $books = Book::with('bookCategory')->where('**cat_name at category table**. 'LIKE', '%' . $input . '%'')->get();
  return Response::json($books);
}

但显然这是行不通的。我这样做的原因是,我想允许用户使用同一个搜索栏来过滤不同的列(我知道如何在一个表中过滤,但不知道如何在两个或多个表中进行过滤)。

您可以使用它。

Book::whereHas('bookCategory', function($q) use ($input)
{
    $q->where('cat_name', 'like', '%'.$input.'%');
})->get();

在中查看更多信息http://laravel.com/docs/4.2/eloquent#querying-关系

编辑:

Book::with('bookCategory')->whereHas('bookCategory', function($q) use ($input)
    {
        $q->where('cat_name', 'like', '%'.$input.'%');
    })->get();

您从关系中获得cat_name