如何在 laravel 中检查模型的对象是不是为空?

Posted

技术标签:

【中文标题】如何在 laravel 中检查模型的对象是不是为空?【英文标题】:How to check object of a model is empty in laravel?如何在 laravel 中检查模型的对象是否为空? 【发布时间】:2015-06-19 23:10:42 【问题描述】:

我正在使用以下代码使用模型访问我的数据库。

$persons = WysPerson::where('family_id', $id)->get();

我使用以下代码检查了$persons是否为空。

if($persons)
        var_dump($persons);
    

其实$persons 是空的。但我得到var_dump 的结果为

object(Illuminate\Database\Eloquent\Collection)#417 (1) ["items":protected]=> array(0)

如何检查$persons 是否为空?有人可以帮忙吗?

【问题讨论】:

@Naruto 集合不是数组。 isEmpty 是正确的方法,Angel 回答如下 Eloquent collection: counting and detect empty的可能重复 【参考方案1】:

你可以使用 isEmpty 方法:

http://laravel.com/api/5.0/Illuminate/Support/Collection.html#method_isEmpty

【讨论】:

我尝试使用 isEmpty 像 "var_dump(isEmpty($persons));" .. 但我收到错误“调用未定义函数 isEmpty()”? 它是一个集合的方法,你应该调用 $persons->isEmpty();【参考方案2】:

使用计数功能

@if (count($persons))

【讨论】:

您的回答有问题,如果您忘记使用 ->get() 执行查询而只是将查询留在原处,count 将返回 1。isEmpty 将抛出异常事情的计划更好。 在 Laravel 集合之前检查集合计数是行不通的【参考方案3】:

如果你有 eloquent 集合,请像这样调用函数isEmpty()

$persons->isEmpty();

这返回真或假。 希望这会有所帮助。

【讨论】:

【参考方案4】:

试试这个。

is_null($var)?abort('empty'):abort('filled') 

【讨论】:

【参考方案5】:

您可以使用 isEmpty() 方法。

同时,您可以在获取数据之前通过简单的 count() 方法进行检查。

    $count = WysPerson::where('family_id', $id)->count();
    if($count==0)
       return redirect()->back()->withErrors('Empty Data');
     
    $persons = WysPerson::where('family_id', $id)->get();

【讨论】:

以上是关于如何在 laravel 中检查模型的对象是不是为空?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel如何检查对象为空

Laravel/PHP - 如何检查 JSON 是不是为空? [复制]

如何在剃刀视图中检查模型字符串属性是不是为空

在 Laravel 中检查请求数组是不是为空

Laravel - 检查@yield 是不是为空

如何在ios中检查(id)对象是不是为空?