背包变形关系字段添加条件以防止如果类不存在而失败

问题描述

这是我的关系:

Class Log extends Model {
    
    public function entity()
    {
        return $this->morphTo();
    }
}

在其他班级:

Class User extends Model{
        
    public function log()
    {
       return $this->morphOne(Log::class,'entity');
    }   
}

例如,它按预期工作。如果entity_type为User,entity_id为14,它将给我ID为14的用户。当entity_type为简单SYstem,entity_id为null时,问题就来了(很遗憾,我无法更改此设置)。通常,如果不是背包,我只会走

$log->entity_id ? $log->entity->name : '';

但是在背包里,我没有做到这一点。尝试了这个:

[
    'name' => 'entity','label' => __('logs.entity_name'),'type' => 'relationship','attribute' => 'name','options' => (function($query){
        return $query->whereNotNull('entity_id')->get();
    })
],

但这不起作用。任何建议都可以使我的领域达到与显示的具有三进制的刀片文件中相同的效果

解决方法

我设法解决了,这是我的解决方案:

[
  'label' => __('logs.entity_name'),'type' => 'closure','function' => function ($entry) {
     if ($entry->entity_id == null) {
         return $entry->entity_type;
     }
         try {
             return $entry->entity->name;
         } catch (\Exception $e) {
             return '';
           }
     },],

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...