当父母不存在时,Laravel hasMany

时间:2018-08-03 09:18:29

标签: laravel eloquent

Parent.php

class Parent extends Model
{
    public function children() {
        return $this->hasMany('App\Child');
    }
}

并且我在控制器中使用了它:

$children = Parent::find($parent_id)->children;

,并且当$parent_id存在时可以。但是当$ parent_id`不存在时。它返回此错误:

Trying to get property 'children' of non-object

如何防止此错误或返回false?

3 个答案:

答案 0 :(得分:3)

解决方案很简单:

<?php
$children = null;
$parent = Parent::find($parent_id);
if ($parent) {
   $children = $parent->children;
}
return $children; // or return false, or throw Exception - whatever you like

如果父级存在,则上面的代码将返回HasMany关系,否则返回false。 如果您无论如何都需要一个集合,那么更好的方法是从另一个角度进行处理,例如:

<?php
$children = Children::where('parent_id', $parent_id)->find();
return $children;

答案 1 :(得分:1)

use Illuminate\Database\Eloquent\Collection;

$parent = Parent::find($parent_id)

$chilren = is_null($parent) ? Collection::make([]) : $parent->children;这是第一个解决方案

您检查父级是否不为null,然后使用具有许多关联的关系或返回空的雄辩性集合

或者您可以通过父母身份获得孩子

Child::where('parent_id', $parent_id)->get()

答案 2 :(得分:1)

$childData=''; 
$parentdata = Appuser::find($parent_id);
if(isset($parentdata)){
$childData = $parentdata->order;
}
 return $childData;