Jes*_*ssy 7 relationship laravel
我有一个有一些关系的对象,我需要检查这些关系是否为空,我正在尝试检查is_null,isset,!= undefined等,但没有任何作用,这是我得到的关系,它是空的:
object(Illuminate\Database\Eloquent\Collection)#197 (1) {
["items":protected]=>
array(0) {
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法轻松检查?谢谢.
Dev*_*von 23
有很多种方法可以做到这一点.
在查询本身中,您可以筛选没有任何相关项的模型:
Model::has('relation')->get()
Run Code Online (Sandbox Code Playgroud)
拥有模型后,如果已经加载了集合,则可以检查集合的计数:
$model->relation->count();
Run Code Online (Sandbox Code Playgroud)
如果要在不加载关系的情况下进行检查,可以对关系运行查询:
$model->relation()->exists()
Run Code Online (Sandbox Code Playgroud)
注意:relation在上面的示例中替换为您的关系名称.
Cal*_*Kao 13
如果模型已经有加载关系,你可以确定变量是null或调用isEmpty()检查相关项:
// For one relation:
if ( $model->relation ) {
// ...
} else {
// $model->relation is null
}
// For many relations:
if ( $model->relation->isEmpty() ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
首先,您可能想检查是否Relation已加载
if ($user->relationLoaded('posts'))...
Run Code Online (Sandbox Code Playgroud)
第二,当它被加载时,你可能想看看它是空的Collection还是Null,
if ($user->posts()->exists())...
Run Code Online (Sandbox Code Playgroud)
聚苯乙烯
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Database\Eloquent\Collection;
Run Code Online (Sandbox Code Playgroud)