Heredoc в базе данных Laravel

Я пытаюсь создать начальное число базы данных в laravel, которое использует heredoc, чтобы установить структуру xml в переменную, а затем использовать эту переменную в качестве одного из значений в начальном числе:

class CodeTableSeeder extends Seeder {

public function run()
{

DB::table('code')->delete();

$xml = <<<RawXML
<?xml version="1.0"?>
<fmxmlsnippet type="FMObjectList">
...
RawXML;

Code::create(array('user_id' => 1, 'code' => $xml));
}
}

Когда я запускаю сеялку, я получаю сообщение об ошибке от ремесленника:

Seeded: UserTableSeeder

[ErrorException]
Undefined variable: searchValue

я знаю это searchValue находится в коде XML:

    <Script includeInMenu="True" runFullAccess="False" id="1" name="Perform a Find (searchValue, searchField, LayoutName)">

Похоже, что клиент базы данных читает XML-документ как код, а не строку heredoc. Есть ли способ запретить читателю читать XML? Есть ли лучший способ включить XML в семя?

Не обязательно включать xml в семя, но было бы неплохо оставить дополнительный шаг в процессе установки для других разработчиков.

1

Решение

Вместо использования heredoc вы можете использовать nowdoc. Из документации:

Nowdocs для строк в одинарных кавычках это то же самое, что heredoc для строк в двойных кавычках. Nowdoc указывается аналогично heredoc, но внутри nowdoc анализ не выполняется.

Смотрите также этот ответ по deceze, который дает практический пример различия между этими двумя:

$foo = 'bar';

$here = <<<HERE
I'm here, $foo!
HERE;

$now = <<<'NOW'
I'm now, $foo!
NOW;

$ здесь — «Я здесь, бар!», а $ сейчас — «Я сейчас, $ foo!».

3

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

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

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