我試圖找出最好的辦法或處理laravel對象變量爲空或不存在的最簡單的方法...驗證了laravel對象變量爲空或不存在
現在我試圖做到這一點我已經提出了2個解決方案,但他們都覺得不是最簡單或最乾淨的方式。
第一種方式是在控制器得到laravel對象後,我做了foreach循環,並在那裏檢查是否存在空或不存在的變量,如果是,則用' - '替換它。
所以在我的控制器將是
$dataarticle = Article::with('categories')
->get();
$i = 0;
foreach($dataarticle as $data){
$datas[$i] = array(
'id' => !empty($data->id) ? $data->id : '-',
'name' => !empty($data->name) ? $data->name : '-',
'category' => !empty($data->categories->name) ? $data->categories->name : '-',
'created_at' => !empty($data->created_at) ? $data->created_at : '-',
);
$i++;
}
在我看來,我只是做另一個foreach循環在我的表....它看起來不錯,但它也意味着我需要做2次的foreach。
的另一種方法是做鑑於變量檢查,所以我只需要做foreach循環一次......但它會使我認爲代碼是混亂..這樣
@foreach($datas2 as $data)
<tr>
<td class="bg-aqua disabled color-palette"></td>
<td hidden>{{ $data->id }}</td>
@if(!empty($data->name))
@if($data->id > 1)
<td>{{ $data->name }}</td>
@else
<td>{{ $data->name }}</td>
@endif
@else
<td>-</td>
@endif
@if($data->hasartikel->count() > 0)
<td><a class="btn btn-default" disabled>{{ $data->jumlah }}</a></td>
@else
<td><a href="#" class="btn btn-default" disabled>{{ $data->hasartikel->count() }}</a> </td>
@endif
</tr>
@endforeach
所以也許有是以更簡單的方式完成它的功能,方法或命令?因爲如果你的表中有很多變量,並且爲每個變量做相同的事情,那將會非常累人。
Laravel核心是否通過返回一個默認值(如'NULL')處理屬性不存在的情況? –
所以我只是把這個函數放到我的模型中,它會自動驗證值?或者我需要在我的視圖中調用這個函數?像$ data-> getNameAttribute-> name; –
@CharlotteDunois抱歉不能確定,但通常laravel將返回存儲在db – xmhafiz