php - Laravel 在两个表中搜索 'LIKE' 查询

标签 php sql search laravel eloquent

我目前正在尝试设置一个搜索栏来过滤两个表的结果,书籍类别

我为两个模型设置了关系,其中:

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

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

Category.php(模型)(表:id,cat_name)

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-relations

编辑:

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

    })->get();

你从关系中得到 cat_name

关于php - Laravel 在两个表中搜索 'LIKE' 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552765/

相关文章:

php - 内连接不起作用

ruby-on-rails - Rails ActiveRecord - 搜索多个属性

search - Solr 与 ElasticSearch

java - BST删除方法不会删除插入的第一个节点

php - 将 php 输出拆分为更小的输出(ajax、php)的策略(嵌套 ajax 调用、ajax 中的 ajax?)

javascript - 证明 hashbang URL 的 noscript 网站内容

MySQL 问题 : Table 'data_dictionary.CHARACTER_SETS' doesn't exist

sql - 如何将 Excel 数据转换为 SQL 插入?

php - 使用 PHP 递归列出所有带日期的文件

php - 带有 readfile 和 file_get_contents 的损坏图像