Laravel Fluent Query - 非对象的属性

时间:2014-05-31 20:06:01

标签: php laravel laravel-4

我正在显示用户活动作业和仪表板上的待处理采访。我可以让积极的工作工作,但当我尝试显示工作的未决面试时,我得到错误:"试图获得非对象的错误。"该行的错误是:$ jobInterviews-> id

这是我的信息中心视图:

@if (! $active)
            <p> You don't have any active projects. Click here to post one!  </p>

            @else
                @foreach($active as $job)
            <div class="media-body">
                     display $job name/description
                    </div>
                    @if ($jobInterviews->id == $active->id)
                    <table class="table table-striped">
                        display $jobInterviews details
                  </table>
                    @else
                    <p></p>
                        @endif
            </div> <!-- .media-body -->
                    @endforeach
            @endif

        </div> <!-- .media -->

我已分别使用$ active和$ jobInterviews运行@foreach循环,两者都运行良好。但是当我嵌套@if($ jobInterviews-&gt; id == $ active-&gt; id)时,我得到错误&#34;试图显示非对象的属性&#34;与$ jobInterviews-&gt; id

相关

这是我的控制器方法:

public function getdashboard()
    {

    //reading the user information
    $arrPageData['user'] = Sentry::getUser();

    //reading the job interviews
    $arrPageData['jobInterviews'] = JobInterview::readCurrentInterviews($this->userID);
            //reading the active jobs
    $arrPageData['active'] = Job::activeJobs($this->userID);

    return View::make('clients.dashboard', $arrPageData);
    }

最后,这是我的查询语句:

 public static function readCurrentInterviews($jobID){
    return DB::table('jobs')
                ->join('job_interviews', 'job_interviews.job_id', '=', 'jobs.id')
                ->join('contractors', 'contractors.user_id', '=', 'job_interviews.send_to')
                ->where('jobs.user_id', '=', $jobID)

                ->where('job_interviews.status', '=', 'awaiting response')
                ->orderBy('job_interviews.created_at', 'desc')
                ->select('jobs.id','jobs.title', 'contractors.user_id', 'contractors.contact_name', 'job_interviews.status', 'jobs.created_at')
                ->get();
}



public static function activeJobs($contractorId){
   return DB::table('jobs')
        ->where('user_id', '=', $contractorId)
        ->select('id','title', 'description', 'created_at')
        ->get();
}

如果有人知道为什么会抛出这个非对象错误,我真的很感激帮助理解它。先感谢您。

1 个答案:

答案 0 :(得分:1)

只需更改以下内容:

@if ($jobInterviews->id == $active->id)

对此:

@if ($jobInterviews->id == $job->id)

此处$active是一系列模型。

确保$jobInterviews不是模型数组,如果它也是模型数组,那么$jobInterviews->id将无效。可能是:

foreach($jobInterviews as $jobInterview)
    ...
    foreach($active as $job)
    @if ($jobInterview->id == $job->id)
        ...
    @endforeach
@endforeach

view $jobInterviews$active中,两者都是多个模型的数组,使用$jobInterviews->id$active->id将无效,相反,您必须从中选择一个单独的项目。