简体   繁体   中英

Laravel query in blade view

How do you translate this query in blade.php

$developer_contractor_association = DeveloperContractorAssociation::whereHas('defect_types', function ($query) use($id) {
            $query->where('developer_contractor_associations.id', $id);
        })->orwhereHas('contractor', function ($query) use($id) {
            $query->where('developer_contractor_associations.id', $id);
        })->first();
    return view('dev-admin.contractors.associations.edit', ['developer_contractor_association' => $developer_contractor_association]);

I tried to use the method above but when it come to blade it doesn't work

@foreach($developer_contractor_association as $dca_details)
    <h2> {{ $dca_details->user->name }} </h2>
    <p><i class="fas fa-map-marker-alt"></i>{{ $dca_details->contractor->address }}</p>
    <p><i class="fas fa-envelope"></i>{{ $dca_details->user->email }}</p>
    <p><i class="fas fa-phone"></i></i>{{ $dca_details->contractor->contact_no }}</p>
@endforeach

Its says:

Trying to get property 'name' of non-object

UPDATE :

I made some mistake on query, I dont need the foreach , this fix my code. Thanks for everyone helps

<div id="contractor-details" class="col-sm-12 col-md-12">
    <h2> {{ $developer_contractor_association->contractor->user->name }} </h2>
    <p><i class="fas fa-map-marker-alt"></i>{{ $developer_contractor_association->contractor->address }}</p>
    <p><i class="fas fa-envelope"></i>{{ $developer_contractor_association->contractor->user->email }}</p>
    <p><i class="fas fa-phone"></i></i>{{ $developer_contractor_association->contractor->contact_no }}</p>
</div>

You should use get() instead of first() , and after that use dd($dca_details) variable in foreach() to see if $dca_details has a user or not , if it had use dd($dca_details->user->name)

and best way to handle this error is using:

{{ $dca_details->user->name ?? '-' }}

That is because one developer_contractor_association is not have user. You must be use

@foreach($developer_contractor_association as $dca_details)
    <h2> {{ $dca_details->user->name ?? 'User absent' }} </h2>
    <p><i class="fas fa-map-marker-alt"></i>{{ $dca_details->contractor->address ?? ''}}</p>
    <p><i class="fas fa-envelope"></i>{{ $dca_details->user->email ?? ''}}</p>
    <p><i class="fas fa-phone"></i>{{ $dca_details->contractor->contact_no ?? ''}}</p>
@endforeach

or you can use

@foreach($developer_contractor_association as $dca_details)
    @if(empty($dca_details->user) || empty($dca_details->contractor))
        @continue
    @endif
    <h2> {{ $dca_details->user->name }} </h2>
    <p><i class="fas fa-map-marker-alt"></i>{{ $dca_details->contractor->address }}</p>
    <p><i class="fas fa-envelope"></i>{{ $dca_details->user->email }}</p>
    <p><i class="fas fa-phone"></i>{{ $dca_details->contractor->contact_no }}</p>
@endforeach

Or in controller use

$developer_contractor_association = DeveloperContractorAssociation::whereHas('defect_types', function ($query) use($id) {
        $query->where('developer_contractor_associations.id', $id);
    })->orwhereHas('contractor', function ($query) use($id) {
        $query->where('developer_contractor_associations.id', $id);
    })->has('user')
   ->has('contractor')
   ->get();
return view('dev-admin.contractors.associations.edit', ['developer_contractor_association' => $developer_contractor_association]);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM