【问题标题】:"Trying to get property 'type' of non-object" when try to edit admin尝试编辑管理员时“尝试获取非对象的属性'类型'”
【发布时间】:2019-06-01 09:32:52
【问题描述】:

Laravel 版本:5.7.14 航海者版本:1.1.1 PHP版本:7.2

“试图获取非对象的属性‘类型’”**

1.我正在尝试编辑管理员用户

2.当点击用户导航选项时,在 voyager 管理面板中会出现同样的问题。我遇到了这个问题。

C:\xampp\htdocs\mfscl_website\vendor\tcg\voyager\src\Http\Controllers\Traits\BreadRelationshipParser.php

    $forget_keys = [];
    foreach ($dataType->{$bread_type.'Rows'} as $key => $row) {
        if ($row->type == 'relationship') {
            if ($row->details->type == 'belongsTo') {
                $relationshipField = @$row->details->column;
                $keyInCollection = key($dataType->{$bread_type.'Rows'}->where('field', '=', $relationshipField)->toArray());
                array_push($forget_keys, $keyInCollection);
            }
        }
    }

“试图获取非对象的属性‘类型’”


如果我尝试编辑用户面包得到这个错误:

ErrorException (E_ERROR) 试图获取非对象的属性“类型” (看法: C:\xampp\htdocs\mfscl_website\vendor\tcg\voyager\resources\views\tools\bread\relationship-partial.blade.php) (看法: C:\xampp\htdocs\mfscl_website\vendor\tcg\voyager\resources\views\tools\bread\relationship-partial.blade.php) 以前的异常尝试获取非对象的属性“类型”(查看: C:\xampp\htdocs\mfscl_website\vendor\tcg\voyager\resources\views\tools\bread\relationship-partial.blade.php) (0) 试图获取非对象的属性“类型”(0)

    <div class="relationshipField">
    <div class="relationship_details_content margin_top belongsTo <?php if($relationshipDetails->type == 'belongsTo'): ?><?php echo e('flexed'); ?><?php endif; ?>">
<label><?php echo e(__('voyager::database.relationship.which_column_from')); ?> <span><?php echo e(str_singular(ucfirst($table))); ?></span> <?php echo e(__('voyager::database.relationship.is_used_to_reference')); ?> <span class="label_table_name"></span>?</label>
<select name="relationship_column_belongs_to_<?php echo e($relationship['field']); ?>" class="new_relationship_field select2">

【问题讨论】:

  • 请检查 row 是否为对象。也许做一个动态转储dd()。也许 row 是一个数组,您需要将类型设置为 $row['type'];
  • 这解决了我的问题 if ($row->type == 'relationship') { $options = json_decode($row->details); if ( $options->type == 'belongsTo' ) { $relationshipField = @$options->column; $keyInCollection = key($dataType->{$bread_type .'Rows'}->where('field', '=', $relationshipField)->toArray()); array_push($forget_keys, $keyInCollection); } }
  • 优秀,干得好
  • 如果您认为您找到的解决方案对其他用户有帮助,请随时self-answer您的问题。否则,您可以delete your post

标签: laravel vue.js voyager


【解决方案1】:

问题出在 data_rows 表中的 user_belongsto_role_relationship 记录中。 你可以参考这个问题: https://github.com/the-control-group/voyager/issues/3871

【讨论】:

    【解决方案2】:

    其实我在https://github.com/the-control-group/voyager/issues/3871发了一个答案,不过在这里转贴给其他用户。

    错误的文件: {"model":"TCG\\Voyager\\Models\\Role","table":"roles","type":"belongsToMany","column":"id","key":"id","label":"name","pivot_table":"user_roles","pivot":"1"}

    我的解决方案: {"model":"TCG\\\\Voyager\\\\Models\\\\Role","table":"roles","type":"belongsToMany","column":"id","key":"id","label":"name","pivot_table":"user_roles","pivot":"1"}

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 2021-02-26
      • 2019-09-11
      相关资源
      最近更新 更多