2015-07-29 2 views
0

Привет всем,Laravel 5 Доступ к данным с компактным

Я надеюсь, что мой пост будет иметь смысл, и вы не будете думать, что я общий новичок (который я иногда ..)

Я пытаясь понять, что лучший способ отправить данные в представление в laravel 5 и получить доступ к этим данным.

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

Вот мой контроллер:

public function timeline() 
{ 
    $array_articles = array(); 

    $sharedcontents = DB::table('follow')->select(DB::raw('GROUP_CONCAT(sharedcontent_id) as concat_article_id')) 
        ->join('sharedcontent_user', 'sharedcontent_user.user_id', '=', 'follow.user_id') 
        ->where('follower_user_id', Auth::user()->id) 
        ->groupBy('sharedcontent_user.sharedcontent_id') 
        ->get(); 

    foreach ($sharedcontents as $sharedcontent) { 

     $article_ids = $sharedcontent->concat_article_id; 

     $shareNumber = DB::table('sharedcontent_user')->where('sharedcontent_id', $article_ids)->count(); 
     $row['share_number'] = $shareNumber; 

     $articles = DB::table('shared_content') 
        ->select( 'sharedcontent_user.sharedcontent_id as sharedId', 
           'shared_content.id as articleId', 
           'shared_content.title as articleTitle', 
           'shared_content.source as articleSource', 
           'shared_content.image as articleImage' 
          ) 
        ->join('sharedcontent_user', 'sharedcontent_user.sharedcontent_id', '=', 'shared_content.id') 
        ->join('users', 'users.id', '=', 'sharedcontent_user.user_id') 
        ->get(); 

     foreach ($articles as $article){ 

      $shared_content_id = $article->articleId; 

      $row['title']     = $article->articleTitle; 
      $row['source']     = $article->articleSource; 
      $row['image']     = $article->articleImage; 
     } 

     array_push($array_articles, $row); 
    } 
    $articles = json_encode($array_articles); 

    return view('timeline', compact('articles')); 
} 

Как вы можете видеть, в начале я создаю массив с именем: $ array_articles , а затем я нажимаю мою строку в него.

Перед отправкой его на мой взгляд я кодирую его с помощью JSON, и, на мой взгляд, я выполняю декодирование JSON.

Мое мнение:

<div id="timeline-container" class="container"> 
<?php $articles = json_decode($articles); ?> 
@foreach ($articles as $article) 
<div id="article-shared-box"> 
    <div class="article-shared-box-left pull-left"> 
     <div class="blend-layer"> 
      <div class="article-shared-picture"><img src="{{ url($article->image) }}" /></div> 
      <div class="category-square">{{ $article->category }}</div> 
      <div class="article-shared-title">{{ $article->title }}</div> 
      <div class="article-shared-source">{{ $article->source }}</div> 
     </div> 
... 

Если я не выполнять это JSON кодирования и декодирования я не могу получить доступ к данным.

Так я делаю это правильно?

@update

Если я не кодировать и декодировать с JSON я всегда получаю: попробовать, чтобы получить доступ к свойству, не объект, независимо от того, как я передать его мнению, и независимо от того, как я называю мой массив.

Вот print_r моего $ article_array:

Array ([0] => Array ([share_number] => 1 [category] => Startup [sharing_user_id0] => 68 [sharing_user_name0] => 건우 박 [sharing_user_picture0] => https://graph.facebook.com/v2.4/723882664388388/picture?type=normal [comment_number] => 1 [most_recent_comment] => hhhh [comment_author] => 건우 박 [title] => 전북도 내 스타트업 육성 … 300억 규모 창조경제 혁신펀드 본격 운용 [source] => Platum [image] => http://platum.kr/wp-content/uploads/2015/07/11941_800799769932697_1056826482061661861_n.jpg) [1] => Array ([share_number] => 1 [category] => Startup [sharing_user_id0] => 68 

ответ

1

Вам не нужно кодировать и декодировать, так как это просто тратит время. Вы можете дать PHP переменные вашей точки зрения, нет никакой необходимости в любой кодировке:

return view('timeline', array('articles' => (object) $array_articles)); 
+0

Если я, как это он говорит: Попытка получить имущество не-объект – Valentincognito

+0

Это потому, что точка зрения доступа как объект, вы может либо изменить представление, чтобы ссылаться на переменные в массиве (например, '$ article ['title']'), либо вы можете придать массив объекту, например, я обновил свой ответ для показа. – Scopey

+0

Он все еще говорит, что пытается попытаться получить доступ к объекту не объекта. (Я попробовал оба ваших решения). Я обновил свой вопрос с результатом print_r – Valentincognito

Смежные вопросы