Исправлена ​​ошибка при попытке получить свойство необъекта Laravel - PullRequest
1 голос
/ 09 января 2020

Я искал другие вопросы, но не смог найти ответ. Я получаю следующую ошибку.

Попытка получить свойство '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 Тинкер, он работает, поэтому я не понимаю, почему возникает эта ошибка. Есть предложения?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Вы получаете несколько записей, если используете метод get().

при использовании first() вы получите только одну коллекцию.

Удалите get() и используйте только first() метод

$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;
}
0 голосов
/ 09 января 2020

Использовать только first()

$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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...