Php 无法为Laravel Voyager中的关系重新创建数据行
我升级到了laravel 5.5和Voyager 1.0,并在一个流浪者盒子上使用mysql 我想在data_rows表中添加一个条目,用于用户和存储之间的关系。我能够使用Voyager的gui创建条目 这将创建相应的表条目 当我将所有这些值复制到播种机中时Php 无法为Laravel Voyager中的关系重新创建数据行,php,json,laravel-5,metacharacters,voyager,Php,Json,Laravel 5,Metacharacters,Voyager,我升级到了laravel 5.5和Voyager 1.0,并在一个流浪者盒子上使用mysql 我想在data_rows表中添加一个条目,用于用户和存储之间的关系。我能够使用Voyager的gui创建条目 这将创建相应的表条目 当我将所有这些值复制到播种机中时 $dataRow = $this->dataRow($storeDataType, 'store_belongsto_user_relationship'); if (!$dataRow->exists) { $dat
$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; ?>
这对我来说有点愚蠢。我的播种机正在插入一根我定义为这样的线;model:App\\User,我认为这足以将\字符放入数据库。就是这样。问题在我添加到问题的最后一行
json_decode($relationship['details'])
调用此函数时,它尝试从数据库中的字符串创建json对象。不幸的是,它没有成功创建json对象,因为种子程序将字符串model:App\User插入到数据库中
为了解决这个问题,我在播种器中将字符串声明改为
型号:App\\\\User
将其作为
型号:App\\User
当它通过json_解码时,它就变成了
型号:App\User
让这成为关于转义角色的重要一课。我知道这是几年前的事了,但我将为旅行者的新手回答这个问题
json_decode($relationship['details'])
一个简单的答案是:详细使用php数组。
例如:
$dataRow=$this->dataRow$storeDataType,“store\u belongsto\u user\u relationship”;
如果$数据行->存在{
$dataRow->fill[
'类型'=>'关系',
“显示名称”=>“管理器”,
“必需”=>0,
“浏览”=>1,
“读取”=>1,
“编辑”=>1,
“添加”=>1,
'删除'=>1,
“详细信息”=>[
模型=>App\\User,
表=>用户,
类型=>belongsTo,
column=>manager\u id,
key=>id,
标签=>电子邮件,
pivot_table=>ad_商店,
pivot=>0,
],
“订单”=>20,
]->保存;
}
我已经好几年没碰过拉威尔或旅行者了。我不知道这是否有效,但我愿意在空闲时间尝试并测试它。这是什么版本的旅行者为你做的?@WhyAyala它在^1.4上工作。我没有检查其他版本。如果你查到另一个版本,请告诉我。泰