猿问

修复尝试获取非对象 Laravel 属性的错误

我搜索了其他问题,但找不到答案。我收到以下错误。


试图获取非对象的属性“nameP”


控制器


public function store(Request $request)

{

    $hourID = $request->hour_id;

    $id = (Hour::latest()->first()->id) + 1;

    $projectID = $request->project_id;


    $sub = DB::table('hours')->join('projects',

        function ($join) use ($projectID, $id) {

            $join->on('hours.project_id', '=', 'projects.id')

                ->where('hours.project_id', '=', $projectID)

                ->where('hours.id', '=', $id);

        })->select('nameP')

        ->get()->first();


    $name = $sub->nameP;

    $hour = Hour::create([

        'id' => $hourID,

        'project_id' => $request->project_id,

        'day' => $request->day,

        'nHours' => $request->nHours,

        'notesH' => $request->notesH

    ]);


    return Response::json([$hour, 'nameP' => $name]);

}

如果我使用 Laravel Tinker 执行此代码,它可以工作,所以我不明白为什么会发生此错误。有什么建议么?


GCT1015
浏览 69回答 1
1回答

白衣非少年

如果您使用get()方法,您将获得多条记录。使用first()你只会得到一个集合。删除get(), and use onlyfirst()方法$name = '';$sub = DB::table('hours')->join('projects', function($join) use ($projectID,$id){                                $join->on('hours.project_id', '=', 'projects.id')                                ->where('hours.project_id', '=', $projectID)                                ->where('hours.id', '=', $id);                            })->select('nameP')->first();if(!empty($sub)){    $name=$sub->nameP;}
随时随地看视频慕课网APP
我要回答