Невозможно воссоздать DataRow для отношений в Laravel Voyager

Я обновился до laravel 5.5 и Voyager 1.0 и использую 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; ?>

Это означает, что json, сохраненный в поле данных, недействителен. Я не понимаю, как это может быть, хотя, когда я скопировал это в мою дословную запись сеялки. Есть ли какая-либо другая запись, добавленная в другую таблицу или кэшированная, которую не учитывает мой читатель? Я пролистал записи в БД и не могу найти ничего очевидного.

РЕДАКТИРОВАТЬ

Добавив эту строку со ссылкой на вопрос, я обнаружил, что это имеет отношение к проблеме

@php $relationshipDetails = json_decode($relationship['details']); @endphp

0

Решение

Так что это было немного глупо с моей стороны. Мой сеялка вставлял строку, которую я определил как таковую; "model":"App\\User"что я считал достаточным для получения \ персонаж в БД. Что это такое. Проблема в последней строке, которую я добавил к вопросу.

json_decode($relationship['details'])

Когда эта функция вызывается, она пытается создать объект json из строки в базе данных. К сожалению, он не создает объект json успешно, потому что отправитель вставил строку "model":"App\User" в базу данных.

Чтобы это исправить, я изменил объявление строки в сеялке на

"model":"App\\\\User"

который вставлен в мою базу данных как

"model":"App\\User"

и когда это пройдет json_decode это становится

"model": "App\User"

пусть это будет важным уроком для спасательных персонажей.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]