簡體   English   中英

根據常用標簽獲取相關帖子? 在laravel 7

[英]Get related posts based on common tag? in laravel 7

到目前為止,我按照一些教程在 Laravel 上標記項目,我有這樣的模式表用於tags table

    public function up()
    {
    Schema::create('tags', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('tagname');
        $table->timestamps();
    });
    Schema::create('artikel_tag', function (Blueprint $table) {
        $table->bigInteger('tag_id')->unsigned()->index();
        $table->foreign('tag_id')->references('id')->on('tags')->onUpdate('cascade')->onDelete('cascade');
        $table->bigInteger('artikel_id')->unsigned()->index();
        $table->foreign('artikel_id')->references('id')->on('artikels')->onUpdate('cascade')->onDelete('cascade');
        $table->timestamps();
    });
}

artikels table:

       public function up()
        {
        Schema::create('artikels', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('judul');
            $table->timestamps();
        });
}

我的藝術模型:

class Artikel extends Model
public function tags()
{
    return $this->belongsToMany('App\Models\tag');
}   

標簽模型:

class tag extends Model
{
    protected $fillable = [

        'tagname',
];
    public function Artikel()
    {
        return $this->belongsToMany('App\Models\Artikel');
    }
}

我的問題是如何獲取數據,例如,如果我選擇帶有標簽horor那么具有相同標簽的其他 artikel 將顯示在同一頁面中。 因為現在它壞了,如果我選擇帶有特定標簽的 artikel,不相關的標簽也會顯示出來。

在兩個模型更新關系中

class Artikel extends Model
public function tags()
{
    return $this->belongsToMany(tag::class,'artikel_tag','artikel_id','tag_id');
}  

class tag extends Model
{
    protected $fillable = [

        'tagname',
];
    public function Artikel()
    {
        return $this->belongsToMany(Artikel::class,'artikel_tag','tag_id','artikel_id');
    }
}

並在查詢中

$tagName="horor ";

Artikel::with('tags')->whereHas('tags',function($query)use($tagName){
   $query->where('tagname',$tagName);
})->get();

如果您可以重構,請遵循命名約定參考: Laravel 5 Naming Conventions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM