我升级到 laravel 5.5 和 Voyager 1.0,并在 vagrant box 上使用 mysql。
我想在 data_rows 表上为用户和商店之间的关系添加一个条目。我可以使用 Voyager 的 gui 创建条目。
当我将所有这些值复制到我的播种机中时, 它会创建相应的表条目
$dataRow = $this->dataRow($storeDataType, 'store_belongsto_user_relationship');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'relationship',
'display_name' => 'Manager',
'required' => 0,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'details' => '{"model":"App\\User","table":"users","type":"belongsTo","column":"manager_id","key":"id","label":"email","pivot_table":"ad_store","pivot":"0"}',
'order' => 20,
])->save();
}
并使用我的自定义播种机运行我的数据库迁移,如果我重新加载/database/stores/bread/edit
页面,我会因为访问在此行上触发的非对象的属性而引发错误。
<?php if($relationshipDetails->type == 'belongsTo'): ?><?php echo e('flexed'); ?><?php endif; ?>
这意味着存储在 details 字段中的 json 无效。当我将它逐字复制到播种机时,我不明白这是怎么回事。是否在另一个表上添加了其他条目或缓存了我的播种机没有考虑的其他条目?我已经浏览了数据库条目,找不到任何明显的东西。
编辑
在我发现它与问题相关时添加此行以引用问题
@php $relationshipDetails = json_decode($relationship['details']); @endphp