首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5嵌套搜索查询

Laravel 5嵌套搜索查询
EN

Stack Overflow用户
提问于 2016-06-16 08:35:07
回答 2查看 734关注 0票数 1

我试图做一个嵌套的搜索查询,但是我得到了这个错误。我正在寻找一个由company_id加入的公司名称。

代码语言:javascript
复制
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'company.name' in 'where clause' (SQL: select count(*) as aggregate from `position` where `to_date` >= 2016-06-16 and `company_id` = 123795854693734 and `title` like %searchquery% and `company`.`name` like %searchquery% and `location` like %%)

这是我的控制器功能

代码语言:javascript
复制
public function Search(){

    $keyword = Input::get('q');
    $location = Input::get('l');

    $data = Position::where('to_date', '>=', date('Y-m-d'))
    ->where('company_id', '=', $company_id)
    ->where('title', 'like', '%'.$keyword.'%')
    ->where('company.name', 'like', '%'.$keyword.'%')
    ->where('location', 'like', '%'.$location.'%')
    ->orderBy('from_date', 'desc')
    ->paginate(10);

    $data = array(
        'data' => $data,
    );

    return view('myview', $data);

}

模型工作得很好。但无论如何,它就在这里。

代码语言:javascript
复制
namespace App;
use Illuminate\Database\Eloquent\Model;

class Position extends Model {
    protected $table = 'position';
    protected $guarded = array("id");
    protected $hidden = array();
    protected $appends = array('local_ad');

    protected $fillable = ['title', 'company_id', 'location'];

    public function company() {
        return $this->belongsTo('App\Company', 'company_id', 'id');
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-16 08:44:26

你没有使用你的关系或者加入公司表,这就是为什么它找不到它的原因。

简单地说,您可以使用whereHas方法过滤带有公司名称的职位。

代码语言:javascript
复制
$data = Position::whereHas('company', function ($q) use ($keyword) {
    $q->where('name', 'like', '%'.$keyword.'%');
})->where('to_date', '>=', date('Y-m-d'))
  ->where('company_id', '=', $company_id)
  ->where('title', 'like', '%'.$keyword.'%')
  ->where('location', 'like', '%'.$location.'%')
  ->orderBy('from_date', 'desc')
  ->paginate(10);
票数 2
EN

Stack Overflow用户

发布于 2016-06-16 08:42:40

这个功能应该是

代码语言:javascript
复制
public function Search(){

    $keyword = Input::get('q');
    $location = Input::get('l');

    $data = Position::where('to_date', '>=', date('Y-m-d'))
    ->where('company_id', '=', $company_id)
    ->where('title', 'like', '%'.$keyword.'%')
    ->with(['company' => function( $q ) use ($keyword) {
        ->where('name', 'like', '%'.$keyword.'%')
    }])
    ->where('location', 'like', '%'.$location.'%')
    ->orderBy('from_date', 'desc')
    ->paginate(10);

    $data = array(
        'data' => $data,
    );

    return view('myview', $data);
}

但是这不做一个连接,这将获取位置,有一个whereHas在雄辩,你应该探索也。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37853963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档