Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5嵌套搜索查询_Php_Laravel_Model View Controller_Orm_Laravel 5 - Fatal编程技术网

Php Laravel 5嵌套搜索查询

Php Laravel 5嵌套搜索查询,php,laravel,model-view-controller,orm,laravel-5,Php,Laravel,Model View Controller,Orm,Laravel 5,我试图进行嵌套搜索查询,但出现此错误。我正在尝试搜索由公司id加入的公司名称 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

我试图进行嵌套搜索查询,但出现此错误。我正在尝试搜索由公司id加入的公司名称

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 %%)
这是我的控制器功能

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);

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

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');
    }

}

此函数应为

公共函数搜索(){
$keyword=Input::get('q');
$location=Input::get('l');
$data=位置::其中('to_date','>=',date('Y-m-d'))
->其中('company_id','=',$company_id)
->其中('title','like','%.$keyword.'%'))
->使用(['company'=>函数($q)使用($keyword){
->其中('name','like','%.$keyword.'%'))
}])
->其中('location','like','%.$location'%'))
->orderBy('from_date','desc')
->分页(10);
$data=数组(
“数据”=>$data,
);
返回视图('myview',$data);
}

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

这个函数应该是

公共函数搜索(){
$keyword=Input::get('q');
$location=Input::get('l');
$data=位置::其中('to_date','>=',date('Y-m-d'))
->其中('company_id','=',$company_id)
->其中('title','like','%.$keyword.'%'))
->使用(['company'=>函数($q)使用($keyword){
->其中('name','like','%.$keyword.'%'))
}])
->其中('location','like','%.$location'%'))
->orderBy('from_date','desc')
->分页(10);
$data=数组(
“数据”=>$data,
);
返回视图('myview',$data);
}

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

你没有使用你的关系或连接到公司表实际上,这就是为什么它找不到它

简单地说,您可以使用该方法筛选具有公司名称的职位

$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);

实际上,您没有使用关系或加入公司表,这就是它找不到它的原因

简单地说,您可以使用该方法筛选具有公司名称的职位

$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);

不太熟悉Laravel,但错误和代码表明您缺少与公司表的联接。不太熟悉Laravel,但错误和代码表明您缺少与公司表的联接。