问题描述
这是我的关系:
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 '';
}
},],