我有一个简单的问题,我一直在使用django,现在我搬到了laravel,在这里呆了2天
我在索引页面上有表单,该表单会将输入发送到求职页面
我曾经在django中做过这样的事,但是在这里它不起作用
public function job_search(Request $request) {
$keyword = $request->get('keywords');
$location = $request->get('location');
if ($keyword) {
$jobs = Job::where('name', 'like', '%'.$keyword.'%');
if ($location) {
$jobs = Job::where('location', 'like', '%'.$location.'%')->where('name', 'like', '%'.$keyword.'%');
}
}
if ($location) {
$jobs = Job::where('location', 'like', '%'.$location.'%');
}
return view('jobs.job_search', compact('jobs','keyword','location'));
}
答案 0 :(得分:2)
您遇到的问题是最后没有添加->get()
。您只是在构建查询。考虑到这一点,您的代码应为:
$jobs = Job::where('location', 'like', '%'.$location.'%')->get();
答案 1 :(得分:1)
如果同时存在关键字和位置,则您将覆盖工作结果。尝试这样
public function job_search(Request $request) {
$keyword = $request->keywords;
$location = $request->location;
$q = new Job;
if ($keyword) {
$q->where('name', 'like', '%'.$keyword.'%');
}
if ($location) {
$q->where('location', 'like', '%'.$location.'%');
}
$jobs = $q->get();
return view('jobs.job_search', compact('jobs','keyword','location'));
}
答案 2 :(得分:1)
对于 get(),您检索所有适合where子句的行。 (请注意,访问所有行都需要循环,否则会出现一些错误)。
如果您在where子句中查找特定数据: Model :: where('field','=','value')-> get();
您没有使用-> get()
public function job_search(Request $request) {
$keyword = $request->get('keywords');
$location = $request->get('location');
if ($keyword) {
$jobs = Job::where('name', 'like', '%'.$keyword.'%')->get();
if ($location) {
$jobs = Job::where('location', 'like', '%'.$location.'%')->where('name', 'like', '%'.$keyword.'%')->get();
}
}
if ($location) {
$jobs = Job::where('location', 'like', '%'.$location.'%')->get();
}
return view('jobs.job_search', compact('jobs','keyword','location'));
}