首页 > 解决方案 > 定义文章 ID

问题描述

我有一个单独的文章的页面,我们通过 slug 去

php.blade

@extends('layouts.app')

@section('content')

    <div class="article-wrapper">
        <div class="container">
            <h1>{{ $article->title }}</h1>
            <h3>{{ $article->subtitle }}</h3>
            <img src="{{ $article->main_image }}" alt="">
            <h3>{{ date('d F Y', strtotime($article->published_at)) }}</h3>
            <h3>{{ $article->views }} Views</h3>

            @foreach($article_blocks as $article_block)
            <div class="text-image">
                <h2>{{ $article_block->title_1 }}</h2>
                <h3>{{ $article_block->text_1 }}</h3>
                <img src="{{ $article_block->main_image }}" alt="">
            </div>
            @endforeach
@endsection

控制器

public function index(Request $request, $slug)
    {
        $article = Article::where('slug', $slug)->first();

        $article_blocks = ArticleBlock::where('article_id', 1)->get();

        return view('article', compact('article', 'article_blocks'));
    }

接下来,我有另一个块模型,每篇文章都有自己的块,正如您在我的控制器中看到的那样,我手动编写文章 ID 以获取特定于它的块。

如何让它自己决定我们在哪篇文章上,并只为它显示块?

标签: php

解决方案


尝试 :

public function index(Request $request, $slug)
    {
        $article = Article::firstWhere('slug', $slug);

        $article_blocks = ArticleBlock::where('article_id', $article->id)->get();

        return view('article', compact('article', 'article_blocks'));
    }

如果您在模型之间创建了关系,则可以按如下方式使用它:

public function index(Request $request, $slug)
        {
            $article = Article::with('articleBlock')->where('slug', $slug)->get();
    
            return view('article', compact('article'));
        }

推荐阅读