Laravel检查关系是否为空
我有一个具有一些关系的对象,我需要检查这些关系是否为空,我正在尝试使用is_null,isset,!=未定义,等等,但没有任何效果,以下是当关系为空时得到的关系:Laravel检查关系是否为空,laravel,relationship,Laravel,Relationship,我有一个具有一些关系的对象,我需要检查这些关系是否为空,我正在尝试使用is_null,isset,!=未定义,等等,但没有任何效果,以下是当关系为空时得到的关系: object(Illuminate\Database\Eloquent\Collection)#197 (1) { ["items":protected]=> array(0) { } } 有什么方法可以很容易地检查这个问题吗? 谢谢 也 第二种方法 if(!is_null($model->relatio
object(Illuminate\Database\Eloquent\Collection)#197 (1) {
["items":protected]=>
array(0) {
}
}
有什么方法可以很容易地检查这个问题吗?
谢谢
也
第二种方法
if(!is_null($model->relation)) {
....
}
有多种方法可以做到这一点 在查询本身中,可以筛选没有任何相关项的模型:
Model::has('relation')->get()
// For one relation:
if ( $model->relation ) {
// ...
} else {
// $model->relation is null
}
// For many relations:
if ( $model->relation->isEmpty() ) {
// ...
}
拥有模型后,如果已加载集合,则可以检查集合的计数:
$model->relation->count();
如果要在不加载关系的情况下进行检查,可以对关系运行查询:
$model->relation()->exists()
注意:将上述示例中的
关系
替换为您的关系名称 如果模型已加载关系,则可以确定变量为null
或调用isEmpty()
检查相关项:
Model::has('relation')->get()
// For one relation:
if ( $model->relation ) {
// ...
} else {
// $model->relation is null
}
// For many relations:
if ( $model->relation->isEmpty() ) {
// ...
}
这并不能直接回答这个问题,但是您可以使用Laravel的
可选的帮助程序来调用您怀疑可能没有值的关系的方法:
optional($user->comments)->where('is_popular', true);
如果用户没有注释,则返回null。否则它将返回用户的流行评论。首先,您可能需要检查您的关系是否已加载
if ($user->relationLoaded('posts'))...
其次,在加载时,您可能希望查看它是空的集合
还是Null
if ($user->posts()->exists())...
PS
我已经用我的关系尝试了第二种方法(is_null($experience->tm()),但这也不起作用:/第一种方法没有返回任何结果:/奇怪的是,我的模型没有关系方法。关系是这个关系中的关系名,而不是文字关系方法。非常好的答案,谢谢$model->relation()->exists()我认为它将返回一个空集合,而不是Null$model->relation->isEmpty()是这个问题的定义答案。这是正确的答案,$model->relation()->exists()
运行另一个查询,即使有急切加载的结果。