Laravel - 试图在链式视图中获取非对象的属性

时间:2014-08-12 10:32:36

标签: laravel laravel-4

在我的视图上检索新对象时遇到一个小问题。我一直收到错误'试图获取非对象的属性'。

我想要展示的领域' oil_gas_skillsgap'是一个有效的字段,当我做一个简单的返回它吐出...

[{" oil_gas_job_id":" 4"" industry_job_id":" 43"" oil_gas_skillsgap&#34 ;: "在这里测试文字"}]

CONTROLLER

public function showjob($slug)
{
    $job = OilGasJob::where("slug", "=", $slug)->first();

    if (is_null($job))
    {
        return Redirect::to('/');
    } else {

        $jobId = $job->id;
        $roleId = Session::get('industryrole');

        $skills = DB::table('industry_job_oil_gas_job')
            ->where('oil_gas_job_id', '=', $jobId)
            ->where('industry_job_id', '=', $roleId)
            ->get();

        return View::make('job')
            ->with('job', $job)
            ->with('skills', $skills);
    }

}

查看

{{ $job->job_title}}
{{ $skills->oil_gas_skillsgap  }}

2 个答案:

答案 0 :(得分:2)

$skills可能是array,而不是object,即使查询只有一个结果。

如果您知道您的查询会返回一个结果,请使用first(),然后直接将其作为对象。

$skills = DB::table('industry_job_oil_gas_job')
            ->where('oil_gas_job_id', '=', $jobId)
            ->where('industry_job_id', '=', $roleId)
            ->first();

否则,请记住以下内容:当使用DB类进行查询时,Laravel将始终返回array。如果您使用Eloquent模型,它将返回Illuminate\Support\Collection个对象。在这两种情况下,即使没有找到行也是如此(arrayCollection将为空)。另一方面,first()方法将返回object(使用数据库时为stdClass,使用Eloquent时)或null时返回模型。

答案 1 :(得分:0)

@ user3189734,

job_title不是$ job集合的一部分,这就是为什么它会抛出'试图获取非对象的属性'。