laravel对象变量的验证是否为空或不存在

时间:2016-11-28 04:08:35

标签: php laravel laravel-5 foreach

我试图找出最好的方法或最简单的方法来处理空的或不存在的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

所以也许有一个函数或方法或命令以更简单的方式完成它?因为如果你的表中有很多变量并且对每个变量做几乎相同的事情,那将会非常累人。

2 个答案:

答案 0 :(得分:2)

只需在模型中为每个字段添加getFieldAttribute,这样只需一次配置即可在任何地方使用

class Article extends Model
{
    public function getNameAttribute($value)
    {
        return !empty($value) ? $value : '-';
    }
}

因此,在view中可以简单地调用变量,如下所示。无需重新格式化

<td>{{ $data->name }}</td>

查看详细信息here

答案 1 :(得分:0)

让你需要的所有领域!!!!!!!!!并且快乐