我在 Laravel 9.x 中使用多态关系时遇到问题
P粉366946380
P粉366946380 2023-09-10 13:33:41
0
1
350

我有 5 个表,分别命名为“Users”、“Chats”、“Buletins”、“Hartas”和“Owners”。所有这些表都通过名为 Mediables 的数据透视表与另一个名为 Medias 的表建立多对多关系。

我需要使用多态关系,因为所有这 5 个表都将使用相同的 Mediables 表来存储它们与 Medias 表的关系。

对于这个主题,让我分享一下在各自的模型文件中定义的公告、媒体和媒体多态关系。我还将分享 Mediables tablemy 控制器的迁移文件

模型公告:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphToMany;

class Buletin extends Model
{
  public function user() 
  {
    return $this->belongsTo(User::class);
  }
  public function medias(): MorphToMany
  {
    return $this->morphToMany(Media::class, 'mediable');
  }
}

媒体模型:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphToMany;

class Media extends Model
{
  public function buletins(): MorphToMany
  {
    return $this->morphedByMany(Buletin::class, 'mediable');
  }
}

医疗模型:

class Medialink extends Model
{
  // no relation defined
}

可治疗的迁移:

public function up()
{
  Schema::create('mediables', function (Blueprint $table) {
    $table->id();
    $table->unsignedBigInteger('media_id');
    $table->foreign('media_id')->references('id')->on('medias')->onDelete('cascade');
    $table->unsignedBigInteger('mediable_id');
    $table->string('mediable_type');
    $table->timestamps();
  });
}

在控制器文件中:

public function showbuletin ($id)
{
  $buletins = Buletin::where('id', $id)->orWhere('comment_id', $id)->paginate(5);
  return view('layouts.buletin.show-bbs')->with(compact('buletins'));
}

在 show-bbs.blade.php 中,我设法在 foreach 循环中回显所有这些内容($buletins 为 $buletin):

{{ $buletin->user->name }} // Buletin belongsTo User & User hasMany Buletin
{{ $buletin->messages }}
{{ $buletin->created_at }}

问题是,我没能回应这个:

{{ $buletin->medias }} // gives me "[]" on the display

请帮助我。

P粉366946380
P粉366946380

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!