0
  • 控制器
    public function index()
    {
        $lists = Region::with('admin')->paginate(15);

        return view('admin.region.index', ['lists' => $lists]);
    }
  • 模型
    public function admin ()
    {
        return $this->hasOne('App\Models\Admin','id','creator');
    }
  • 模板
<td class="text-yellow">{{ $list->admin->name }}</td>
<td class="text-yellow">{{ $list->admin?$list->admin->name:'不存在' }}</td>
  • 报错信息
  • 报错原因,region 中的 creatoradmin 中找不到关联的数据,返回 null
  • 模型中如何操作,让空数据不进行关联查询,只把完整的关联数据显示出来

5个回答

2

已采纳

可以的. 如下:

public function admin ()
{
    return $this->hasOne('App\Models\Admin','id','creator')->withDefault();
}

withDefault() 参数为布尔, 数组, 函数.

使用withDefault()可以保证admin这个关联对象不为null, 是一个对象.

0

通过判断$list->admin是否为空,应该是可以处理掉的

0

试一下:
<td class="text-yellow">{{ is_null($list->admin->name)?'不存在':$list->admin->name}}</td>

0

不可能的(或者去改框架源码?),就算没有,也会返回那个字段的。
因为需要保证数据结构的一致性,就好比你给前段写接口,你不能因为某个字段值就空,就连这个键都不返回。

0

withDefault()在laravel中的其它版本中没有,还是判断$list->admin是否为空的好

撰写答案