выполняю запрос на вывод постов выбранного тега
$tag = Tag::where('slug', $slug)->first();
$articles = DB::table('articles')
->leftJoin('article_tags', 'articles.id', 'article_tags.article_id')
->select('articles.*')
->where('article_tags.tag_id', $tag->id)
->where('articles.published', '=', 1)->orderBy('articles.view', 'desc')->paginate(15);
в шаблоне пытаюсь вывести теги соответствующего поста
@forelse($article->atags as $tag)
<li><a href="{{route('tagsArticles', $tag->tag->slug)}}">{{$tag->tag->title}}</a></li>
@empty
@endforelse
но выдает ошибку
Undefined property: stdClass::$atags (View:post-tag.blade.php)
Все дело в том, что Вы сейчас пользуетесь механизмом прямого обращения к базе данных для получения $articles. Он реализован через PDO, соответственно, возвращает "что положено" - массив объектов stdClass
, представляющий результат выполнения оператора SQL. Там будет по 1 объекту на строчку выборки. При этом Вы надеетесь получить функциональность, являющуюся частью модели Eloquent. А это возможно только если Вы будете пользоваться механизмом доступа к данным, предусмотренным Eloquent. Как в случае с получением тэгов через модель Tag
:
$articles = Article::where('article_tags.tag_id', $tag->id)
->where('articles.published', '=', 1)->get();
Ну, естественно, нужно добавить недостающие условия выборки.
P.S. В не очень понятных случаях (типа Вашего) полезно посмотреть, что находится в переменной. Для этого удобно воспользоваться встроенной функцией Laravel dd($variable1, $variable2, ...)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Начал знакомство с фреймворком Spring и встал вопросЕсли мы описываем те же самые зависимости в файле "applicationContext" между классами, то чем же лучше...