Как решить "Попытка получить свойство необъекта" в Laravel? - PullRequest
0 голосов
/ 05 октября 2018

Если мой код возвращает ноль, то он генерирует эту ошибку.Если код возвращает некоторые данные, он работает нормально.

Контроллер

$profile_data= DB::table('partner_prefence')
    ->select('*')
    ->where('profile_id',$profile_id)
    ->first();

return view('partner_prefence',['profile_data' =>  $profile_data]);

Вид / Blade

@php($rel_status = explode(',', $profile_data->p_marital_status))

Если $profile->p_marital_status имеет значение, то проблем нет.Ошибка появляется только тогда, когда ее значение равно нулю.

Ответы [ 4 ]

0 голосов
/ 22 июня 2019

Использовать optional() https://laravel.com/docs/5.8/helpers#method-optional

Если заданный объект имеет значение NULL, свойства и методы будут возвращать NULL вместо возникновения ошибки.

{!! old('name', optional($user)->name) !!}
0 голосов
/ 05 октября 2018

Сначала нужно проверить $ profile_data, если оно пустое или содержит какие-то данные.Шаг 2: Проверка объекта $ profile_data имеет свойство p_material_status.Шаг 3: Если оба приведенных выше факта верны, попробуйте разбить данные, в противном случае верните какое-либо сообщение об ошибке и постарайтесь не разбить данные, будет лучше.

<?php

$data = (($profile_data != null) && property_exists($profile_data->p_marital_status)) ? $profile_data->p_marital_status : null)
if($data){
$rel_status = explode(',', $data);
}else{
    // Something else
}

?>
0 голосов
/ 05 октября 2018

В зависимости от того, является ли запись жизненно важной для отображаемой страницы или нет, вы можете выполнить проверку в контроллере.

$profile_data = DB::table('partner_prefence')
->select('*')
->where('profile_id',$profile_id)
->firstOrFail()

Или разрешить передачу нулевого значения в представление исделать троичную проверку.

$profile_data ? $profile_data->p_marital_status : '';

Список литературы:

Тернарный оператор

Получение одиночных моделей

0 голосов
/ 05 октября 2018

Просто используйте isset() или != null в следующем предложении:

@php($rel_status = $profile_data ? explode(',', $profile_data->p_marital_status?: '')) : [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...