在 laravel 中添加多个图层以搜索模型
Posted
技术标签:
【中文标题】在 laravel 中添加多个图层以搜索模型【英文标题】:Adding multiple layers to a search of a model in laravel 【发布时间】:2014-07-21 15:48:05 【问题描述】:所以在我的网站中,我正在实现一个搜索功能,用户可以在其中输入 3 个字段的值。我希望它以某种方式执行,例如,如果所有字段都有输入,它会先执行搜索,然后对第一次搜索返回的结果执行下一次搜索,最后添加最后一个搜索。我的代码如下所示:
public function search()
$input = Input::all();
$users = User::all();
$jobs = Job::all();
if($input->industry!=null)
$users = $users::where('industry', '==', $input->industry);
$jobs = $jobs::where('user_id', '==', $users->id);
if($input->location!=null)
$jobs = $jobs::where('location', '==', $input->location);
if($input->salary!=null)
$jobs = $jobs::where('salary', '>', $input->salary);
return View::make('jobs.jobsList')->with(compact('jobs'))->with(compact('users'));
但我在尝试获取非对象的属性时遇到错误。任何有关我如何添加此功能的提示将不胜感激。谢谢
【问题讨论】:
【参考方案1】: $input = Input::all();
$input
是一个数组。 Input::all()
返回一个包含 GET 和 POST 数组中所有元素的数组,但您正试图将其作为对象属性进行访问。
您可以使用has()
方法来测试输入是否包含该索引:
if(Input::has('industry'))
但也很简单
if(Input::get('industry'))
在这里也可以。
另外,我相信你在调用模型时也会遇到错误,你应该这样做:
$users = $users->where('industry', '=', Input::get('industry'));
或
$users = Users::where('industry', '=', Input::get('industry'));
【讨论】:
是我增加图层的方式吗?在我更改 ifs 以包含 has 语句后,我得到了一个新错误。类名必须是有效的对象或字符串。谢谢你的帮助 您能发布实际的错误消息吗?带行号等 Symfony\Component\Debug\Exception\FatalErrorException …/app/controllers/JobController.php53 作业控制器第 53 行是这个 if 语句,我假设其他 if 语句会给出相同的错误 if($input::has('industry')) $users = $users::where ('行业','==',$输入->行业); $jobs = $jobs::where('user_id', '==', $users->id); 不想听起来刺耳,但你真的读过我的回答吗?我为您提供了一些代码,但您继续使用您的代码。请重新检查我写的代码。您在评论中发布的两行都与我建议的完全不同以上是关于在 laravel 中添加多个图层以搜索模型的主要内容,如果未能解决你的问题,请参考以下文章
如何在相机视图上添加图层以根据设备的位置显示带有地理位置数据的标签,例如在 ZipRealty Real Estate 应用程序中