Подгрузка связей laravel

113
08 июля 2021, 08:00

выполняю запрос на вывод постов выбранного тега

$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)

Answer 1

Все дело в том, что Вы сейчас пользуетесь механизмом прямого обращения к базе данных для получения $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, ...)

READ ALSO
короткие функции mysqli

короткие функции mysqli

создал функцию add

105
Загрузка multiple файлов на диск

Загрузка multiple файлов на диск

$files это массив, получаемый отсюда

75
Undefined offset

Undefined offset

Что может вызвать данную ошибку? Код

95
Чем описание объектов в applicationContext Spring лучше кода Java

Чем описание объектов в applicationContext Spring лучше кода Java

Начал знакомство с фреймворком Spring и встал вопросЕсли мы описываем те же самые зависимости в файле "applicationContext" между классами, то чем же лучше...

87