Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.07.2017 18:06:53

foreach

Добрый день. Проблема такая. Есть таблица articles у которой приблизительная структура такая:

$table->string('title_ru');
$table->string('title_en')->nullable();
$table->text('content_ru');
$table->text('content_en')->nullable();
$table->..... 

Не кидайтесь на меня я знаю что такое решение мало назвать костыльным, но суть вот в чем ->
В переменной $articles я храню все посты. Мне нужно в контроллере прочекать текущий язык и вывести в статью соответствующий title и content.

Чекать и менять язык на соответствующий я собрался так

if (App::getLocale() == 'ru')
{
   foreach($articles as $article)
   {
     $article['title'] = $article->title_ru;
   }
}

Все замечательно, только вот как сохранить данные изменения обратно в переменную $articles что бы передать во view и распарсить там тем же @foreach !? Заранее благодарю.

Не в сети

#2 25.07.2017 21:21:09

Re: foreach

если $articles - это коллекция моделей элоквент:

$lang = App::getLocale();
if (!in_array($lang, ['ru', 'en')) {
    throw new \Exception(sprintf('unsupported language %s', $lang));
}
$article['title'] = $article['title_ ' . $lang];

Не в сети

#3 26.07.2017 00:04:38

Re: foreach

если $articles - это коллекция моделей элоквент:

Спасибо большое за вмешательство но думаю вы не поняли суть вопроса.

Решил так

if(App::getLocale()=="ru"){
  foreach($articles as $key=>$article){
    $article["title"] = $article->title_ru;
    $articles[$key]=$article;
    unset($key,$article);
  }
}

Можете закрывать!

Изменено MeKree (26.07.2017 00:04:51)

Не в сети

#4 26.07.2017 09:02:37

Re: foreach

Можно ведь использовать аксессор

  public function getTitleAttribute()
    {
        $locale = \App::getLocale();
        $column = "title_" . $locale;
        return $this->{$column};
    }

Не в сети

Подвал раздела