不存在关系时的默认值

Posted

技术标签:

【中文标题】不存在关系时的默认值【英文标题】:Default value if relationship doesn't exist 【发布时间】:2018-11-18 00:23:07 【问题描述】:

使用 Laravel 数据表包:https://github.com/yajra/laravel-datatables

我渴望加载belongsTo 关系。但是,对于某些行,关系可能不存在,relationship_id 列将为空。

这导致数据表出现问题:

 data: 'relationship.name' ,

如果关系不存在,则会引发错误。如果未找到关系,我将如何为此特定列设置默认值?我试过使用editColumn,它可以用于排序,但不能用于搜索。

【问题讨论】:

【参考方案1】:

你可以使用withDefault():

public function relationship()

    return $this->belongsTo(...)->withDefault(['name' => 'default']);

【讨论】:

我正在使用withDefaults(),但我遇到的问题是我无法再使用has() 检查引用表中是否存在相关行。 我尝试将它与数据表一起使用,但无法正常工作【参考方案2】:

作为数据表的文档

https://datatables.net/reference/option/columns.defaultContent

说你可以使用

$('#example').dataTable( 
  "columns": [
    null,
    null,
    null,
    
      "data": "first_name", // can be null or undefined
      "defaultContent": "<i>Not set</i>"
    
  ]
 );

如果条件像这样,你也可以做出另一个答案

if (item.relationship != null) 
    return item.relationship;
                        
    return '';  //this is the default if the relationship doesn't exist
 

【讨论】:

以上是关于不存在关系时的默认值的主要内容,如果未能解决你的问题,请参考以下文章

从 [x=1.0][y=1.0] 到 [x=3.0][y=3.0] 的关系的时间值不存在

SQL Select 语句 - 字段不存在时的默认字段值

MySQL:如果值存在,则对行进行更新,如果值不存在,则插入 [重复]

如果值不存在,则插入连接表

大查询 - 仅在列值不存在时插入

如果值不存在,则选择空行