试图获取非对象的 属性,无法访问 phoneNumber 属性

Trying to get property of non-object, can't access to phoneNumber properties

Route::get('/', function (){

$contacts = Contact::all();
//dd($contacts);

return view('welcome')->with('contacts',$contacts);

});

从路线我将 $cotacts 传递给视图

@foreach($contacts as  $contact)

    <li> {{$contact->name}}

        <small>by {{$contact->phoneNumber->number}}</small>

    </li>

@endforeach

但是当我访问phoneNumber的号码时,这是我的class:

public function phoneNumber()
    {
         return $this->hasOne(PhoneNumber::class);
    }

我收到错误 正在尝试获取 属性 的非对象 ???

当我这样写的时候:

<li> {{$contact->name}}

            <small>by {{$contact->phoneNumber}}</small>

        </li>

我得到: {"id":20,"contact_id":1,"number":"+1-936-288-3493","created_at":"2018-04-01 20:14:16","updated_at":"2018-04-01 20:14:16"}

的科尔顿·基尔巴克四世

Shaun Streich DVM

博士。

的 Ruthe Thiel III

Laverne Mertz {"id":11,"contact_id":4,"number":"(769) 844-4643 x59321","created_at":"2018-04-01 20:14:16","updated_at":"2018-04-01 20:14:16"}

等等有些名字没有编号。

问题是您的 Contacts 没有名称 Dr. Ruthe Thiel IIIShaun Streich DVM 的关联 PhoneNumber

您可以在 blade 模板中改用它:

<li> {{$contact->name}}
    <small>by {{$contact->phoneNumber->number ?? ''}}</small>
</li>

如果 none 可用,这将简单地省略 phone 号码。


编辑:如果你想让输出更漂亮一点,你也可以使用这样的东西:

<li> {{$contact->name}}
    @if(count($contact->phoneNumber))
        <small>by {{$contact->phoneNumber->number}}</small>
    @else
        <small>has no known phone number</small>
    @endif
</li>