Привет всем,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
Если я, как это он говорит: Попытка получить имущество не-объект – Valentincognito
Это потому, что точка зрения доступа как объект, вы может либо изменить представление, чтобы ссылаться на переменные в массиве (например, '$ article ['title']'), либо вы можете придать массив объекту, например, я обновил свой ответ для показа. – Scopey
Он все еще говорит, что пытается попытаться получить доступ к объекту не объекта. (Я попробовал оба ваших решения). Я обновил свой вопрос с результатом print_r – Valentincognito