Hima Hima
Hima Hima

Reputation: 123

laravel Trying to get property of non-object on null value

I'm trying to get data from the database but when one column has null value give me this error

Trying to get property of non-object

the problem when assignTot is null give me the error if have value everything is ok. How can I use a solution like return view('stations.show')->withStation('$station'); in my controll that return multiple as

return view('admin.contracts.show', compact('contracts','asiTo','tranTo','replies'));

public function show($id){
    $contracts=Contracts::find($id)
        ->where('contracts.id',$id)
        ->join('destination','contracts.condesid','destination.id')
        ->join('department','contracts.condepid','department.id')
        ->join('users','contracts.conassigneto','users.id')
        ->select('contracts.*','destination.name as desName','department.name  as depName','users.name as assignTot')
        ->first();
    return view('admin.contracts.show', compact('contracts'));
}

Blade:

<h2><span class="profile-details-name-nn">{{ $contracts->conhotelname }}</span></h2>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12">
    <div class="btn-group project-list-ad">
        <button class="btn btn-white btn-xs">{{ $contracts->constatus }}</button>
    </div>
    <div class="project-details-dt">
        @if($contracts->assignTot == null)
            <span>-</span>
        @else
            <span>{{ $contracts->assignTot }}</span>
        @endif
    </div>
</div> 

Upvotes: 0

Views: 750

Answers (1)

Leena Patel
Leena Patel

Reputation: 2453

You need to declare array $contracts like below

public function show($id)
{
   $contracts = array();
   $contracts=Contracts::find($id)
    ->where('contracts.id',$id)
    ->join('destination','contracts.condesid','destination.id')
    ->join('department','contracts.condepid','department.id')
    ->leftjoin('users','contracts.conassigneto','users.id')
    ->select('contracts.*','destination.name as desName','department.name  as depName','users.name as assignTot')
    ->first();
     return view('admin.contracts.show', compact('contracts'));
  }

Upvotes: 1

Related Questions