Laravel Transhable заводской посев с динамическими локалями - PullRequest
0 голосов
/ 01 июля 2018

Я хочу собрать на заводе переводимую модель без жесткого кодирования локалей.

Есть два значения, которые я должен посеять: слизняк, который нельзя перевести, и название, которое необходимо перевести на все языки из таблицы языков.

Вот заводской файл:

$factory->define(App\Category::class, function (Faker $faker) {

 $counter = 1;
 $locales = Language::pluck('lang'); //returns hr,en,de
 $titles = [];

 foreach ($locales as $locale) {
    $titles[$locale] = [
        'title' => 'Title for category-' .$counter++. ' on '. $locale . ' language'
    ];
 }

/*
$titles = 
     "hr" => array:1 [
        "title" => "Title for category-1 on hr language"
     ]
     "en" => array:1 [
        "title" => "Title for category-2 on en language"
      ...
 */

return [
    'slug' => 'category-'.$counter++,
    $titles
];
});

Это дает мне ошибку:

Столбец не найден: 1054 Неизвестный столбец 'hr'

Запрос, созданный фабрикой:

вставить в до category_translations (locale, hr, en, de, test, category_id) (0, Название для категории-1 на языке hr, Название для категории 2 на английском языке, название для категории 3 на русском языке e, Название для категории-4 на тестовом языке, 20))

1 Ответ

0 голосов
/ 01 июля 2018

После некоторых экспериментов я нашел решение, вот оно:

$factory->define(App\Category::class, function (Faker $faker) {

 static $counter = 1;
 $locales = Language::pluck('lang');
 $titles = array('slug' => 'CATEGORY-'.$counter);

 foreach ($locales as $locale) {
    $titles[$locale] = [
        'title' => 'Title for category-' .$counter. ' on '. $locale . ' language'
    ];
 }
 $counter++;


return $titles;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...