我试图找出最好的方法或最简单的方法来处理空的或不存在的laravel对象变量......
现在我试图这样做我已经提出了2个解决方案,但他们都感觉不是最简单或最干净的方式。
第一种方式是在获得laravel对象之后在控制器中,我做foreach循环并在那里我检查是否存在空或不存在变量,如果是,则将其替换为' - '。 p>
所以在我的控制器中它将是
$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
所以也许有一个函数或方法或命令以更简单的方式完成它?因为如果你的表中有很多变量并且对每个变量做几乎相同的事情,那将会非常累人。
答案 0 :(得分:2)
只需在模型中为每个字段添加getFieldAttribute,这样只需一次配置即可在任何地方使用
class Article extends Model
{
public function getNameAttribute($value)
{
return !empty($value) ? $value : '-';
}
}
因此,在view
中可以简单地调用变量,如下所示。无需重新格式化
<td>{{ $data->name }}</td>
查看详细信息here
答案 1 :(得分:0)
让你需要的所有领域!!!!!!!!!并且快乐