php - 试图从 laravel 中 Eloquent 产品评论中获取评论者的姓名

Product.php

public function reviews(){
    return $this->hasMany(Review::class);
}

Review.php

public function product(){
    return $this->belongsTo(Product::class);
}

public function user(){
    return $this->belongsTo(User::class);
}

User.php

public function reviews(){
    return $this->hasMany(Review::class);
}

在 Controller 中

$product = Product::where('slug', $request->slug)->with('category')->with('reviews.user')->first();

在 Blade 中

{{$review->user->name}}

现在在 blade 中它返回 null。

提到 评论表有 product_id, reviewed_by

现在,我如何从这个关系模型中获取评论者姓名?请帮我解决这个问题。

最佳答案

如果你有不同于 laravel 默认字母顺序的外键,你需要在 hasMany 和 belongsTo 关系上指定外键

public function user()
{
    return $this->belongsTo(User::class, 'reviewed_by');
}

//In User Model
public function reviews()
{
    return $this->hasMany(Review::class,'reviewed_by');
}

//In Product Model
public function reviews()
{
    return $this->hasMany(Review::class,'product_id');
}

https://stackoverflow.com/questions/62782953/

相关文章:

ios - Flutter NSException : Configuration fails. 可

postgresql - 使用实体中的默认值与 PostgreSQL hibernate

android - CameraX - 在纵向模式下锁定 Activity 时仅旋转预览

amazon-web-services - terraform 可以复制 s3 存储桶的内容吗?

pdf - 从 S3 读取 pdf 对象

python - 将 Pandas 数据框字符串拆分为单独的行

javascript - 如何使用 react 模态显示没有背景效果的模态?

r - 在 R 中将日期偏移一个月

oracle - 基于字符和数字的 PL/SQL Regex 搜索

javascript - 如何使用 typescript 导出 Mongoose 模式?