【问题标题】:Adding multiple layers to a search of a model in laravel在 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'));
}

但我在尝试获取非对象的属性时遇到错误。任何有关我如何添加此功能的提示将不胜感激。谢谢

【问题讨论】:

    标签: php sql laravel model where


    【解决方案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); }
    • 不想听起来刺耳,但你真的读过我的回答吗?我为您提供了一些代码,但您继续使用您的代码。请重新检查我写的代码。您在评论中发布的两行都与我建议的完全不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多