使用eagerload laravel 9获取关系数据时出现的问题

soat7uwm  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个问题时,渴望加载的数据是已经有一对多的关系和错误,如代码如下

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'media_categories.foto_id' in 'where clause'

select * from `media_categories` where `media_categories`.`foto_id` in (2)

这个错误出现时,我试图从FotoController eagerload媒体_类别数据,为什么它的要求foto_id?
这是我的控制器

$foto = Foto::with('mediaCategory','user')->where('id', $request->id)->first();

    return Inertia::render('Foto/DetailFoto', [
        'foto' => $foto
    ]);

这是我的table设计
这是我的fotos表

Schema::create('fotos', function (Blueprint $table) {
        $table->id();
        $table->unsignedInteger('media_id');
        $table->string('name');
        $table->decimal('price');
        $table->string('description');
        $table->date('date');
        $table->string('folder');
        $table->smallInteger('pcs');
        $table->unsignedInteger('user_id');
        $table->timestamps();
    });

这是我的media_categories表

Schema::create('media_categories', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description');
        $table->unsignedInteger('user_id');
        $table->timestamps();
});

这是我在foto model的关系

public function user(){
    return $this->BelongsTo(User::class);
}
public function mediaCategory(){
    return $this->HasMany(MediaCategory::class);
}

这是我的媒体类别模型

public function user(){
    return $this->BelongsTo(User::class);
}
public function foto(){
    return $this->BelongsTo(Foto::class);
}
nqwrtyyt

nqwrtyyt1#

您已在Foto模型中将关系定义为HasMany,但它应改为BelongsTo

public function mediaCategory(){
    return $this->belongsTo(MediaCategory::class, 'media_id');
}

相关问题