使用 eloquent 向 blade 显示 laravel 数据时出错
Error in showing laravel data to blade using eloquent
我有这个承包商模型
public function ContractorDetails()
{
return $this->hasOne(ContractorDetails::class)->select('id', 'contractors_id');
}
和 ContractorDetails 模型
public function Contractors()
{
return $this->belongsTo(Contractors::class);
}
我可以检索 Contractors 模型下的所有列,但每当我这样做时 $contractors->ContractorDetails->id,它都会显示此错误 "试图获得 属性 'id' 的 non-object" 。然而,当我只使用这个 $contractors->ContractorDetails 时,它能够显示这个 collection {"id":6,"contractors_id":24}
我的控制器是这样的
**$contractors = Contractors::orderby('name')->with('ContractorDetails')->get();**
我的blade文件
<tbody>
@foreach($contractors as $contractor)
<tr class="bg-white lg:hover:bg-gray-100 flex lg:table-row flex-row lg:flex-row flex-wrap lg:flex-no-wrap mb-10 lg:mb-0">
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold"> Contractor Name</span>
{{ $contractor->name }}
</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b text-center block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold">Status</span>
<span class="{{$contractor->status == 0 ? 'px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-green-800' : 'px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800' }}"> {{$contractor->status == 0 ? 'onHold' : 'Approved' }}</span>
</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b text-center block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold">Actions</span>
<x-jet-button wire:click="{{ route('ContractorID', [$contractor->ContractorDetails->id])}}" wire:loading.attr="disabled">
{{ __('EDIT') }}
</x-jet-danger-button>
<x-jet-danger-button wire:click="confirmContractorDeletion( {{$contractor->id }})" wire:loading.attr="disabled">
{{ __('Delete') }}
</x-jet-danger-button>
</td>
</tr>
@endforeach
</tbody>
如有任何帮助,我们将不胜感激
先尝试检查如下:
isset($contractors->ContractorDetails->id) ? $contractors->ContractorDetails->id : 'No result found'
您可能遇到还没有 contractorDetails 的情况。
已找到修复程序。
我在我的承包商模型下创建了另一个函数
public function getContractorDetailsAttribute()
{
return $this->ContractorDetails()->pluck('id')->first();
}
现在我可以用这个
从 ContractorDetails 模型中获取 ID
$contractors->ContractorDetails
我有这个承包商模型
public function ContractorDetails()
{
return $this->hasOne(ContractorDetails::class)->select('id', 'contractors_id');
}
和 ContractorDetails 模型
public function Contractors()
{
return $this->belongsTo(Contractors::class);
}
我可以检索 Contractors 模型下的所有列,但每当我这样做时 $contractors->ContractorDetails->id,它都会显示此错误 "试图获得 属性 'id' 的 non-object" 。然而,当我只使用这个 $contractors->ContractorDetails 时,它能够显示这个 collection {"id":6,"contractors_id":24}
我的控制器是这样的
**$contractors = Contractors::orderby('name')->with('ContractorDetails')->get();**
我的blade文件
<tbody>
@foreach($contractors as $contractor)
<tr class="bg-white lg:hover:bg-gray-100 flex lg:table-row flex-row lg:flex-row flex-wrap lg:flex-no-wrap mb-10 lg:mb-0">
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold"> Contractor Name</span>
{{ $contractor->name }}
</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b text-center block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold">Status</span>
<span class="{{$contractor->status == 0 ? 'px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-green-800' : 'px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800' }}"> {{$contractor->status == 0 ? 'onHold' : 'Approved' }}</span>
</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b text-center block lg:table-cell relative lg:static">
<span class="lg:hidden absolute top-auto left-0 bg-blue-200 px-1 py-1 text-xs font-bold">Actions</span>
<x-jet-button wire:click="{{ route('ContractorID', [$contractor->ContractorDetails->id])}}" wire:loading.attr="disabled">
{{ __('EDIT') }}
</x-jet-danger-button>
<x-jet-danger-button wire:click="confirmContractorDeletion( {{$contractor->id }})" wire:loading.attr="disabled">
{{ __('Delete') }}
</x-jet-danger-button>
</td>
</tr>
@endforeach
</tbody>
如有任何帮助,我们将不胜感激
先尝试检查如下:
isset($contractors->ContractorDetails->id) ? $contractors->ContractorDetails->id : 'No result found'
您可能遇到还没有 contractorDetails 的情况。
已找到修复程序。
我在我的承包商模型下创建了另一个函数
public function getContractorDetailsAttribute()
{
return $this->ContractorDetails()->pluck('id')->first();
}
现在我可以用这个
从 ContractorDetails 模型中获取 ID$contractors->ContractorDetails