如何解决 laravel 数据表中的“尝试获取非对象的属性‘名称’”错误?

Posted

技术标签:

【中文标题】如何解决 laravel 数据表中的“尝试获取非对象的属性‘名称’”错误?【英文标题】:How to solve "Trying to get property 'name' of non-object" error in laravel Data Tables? 【发布时间】:2020-06-24 03:07:25 【问题描述】:

我在这里使用 laravel 中的数据表我试图获取具有关系的数据,有时关系 id 不存在,因此它在 laravel 刀片中给出空值我可以通过检查它是否为空来处理它。但在数据表中,我不能使用它。

returning values to data table

return [

                    'delivery_run_id' =>  $run_sheet->delivery_runs->name: 

 ];

当我在 return 语句之前,它工作正常,但我认为这种方法不好

 if(empty($run_sheet->delivery_runs->name))
             
                $delivery_run = '';
             
             else
             
              $delivery_run =  $run_sheet->delivery_runs->name;
             

我尝试为数据表列设置默认值,但它不起作用

 var table = $(tablename).DataTable(
        responsive: true,
        "order": [],
        'aoColumnDefs': [
            'bSortable': false,
            'aTargets': ['nosort']
        ],
        buttons: [
            'print',
            'copyhtml5',
            'excelHtml5',
            'csvHtml5',
            'pdfHtml5',
        ],
        processing: true,
        serverSide: true,
        ajax: 
            url: url,
            type: 'get',
            data: filters
        ,

        columns: columns,


        "language": 
            processing: "<img src='https://thumbs.gfycat.com/WatchfulSnarlingBettong-max-1mb.gif'>"
        ,
        "columnDefs": [
            
              "data": null,
              "defaultContent": "<button>Edit</button>",
              "targets": -1
            
          ]
    );

【问题讨论】:

【参考方案1】:

使用三元运算符来检查是否设置。

$delivery_run = $run_sheet->delivery_runs->name ?? "";
return [
    'delivery_run_id' =>  $run_sheet->delivery_runs->name ?? ""; 
];

【讨论】:

以上是关于如何解决 laravel 数据表中的“尝试获取非对象的属性‘名称’”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中管理数据库中的试题?

如何使用模型处理 laravel 中的数据库分区

如何解决 Lumen/Laravel 中的单例?

如何解决 Laravel + Nuxt.js 中的 CORS 错误

如何解决 laravel 中不明确的列问题?

如何解决 cURL 错误 60:Facebook 身份验证时 Laravel 5 中的 SSL 证书