[英]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.