php - 无法从 laravel 中的相关表中获取详细信息(使用 with)

标签 php mysql laravel web eloquent

我试图从我的 ProductReview.php 中的用户表中获取用户名,并从产品表中获取产品名,但它返回 null

ProductReview.php

class ProductReview extends Model
{
    protected $table = 'product_review';

    protected $fillable = ['review_id','user_id','order_id','product_id','region','vendor','verified_order',
                               'star_rating','date_of_review','review_title','review_message','published',
                               'relevance','order_id','order_item_id','order_type','order_number','source_of_review',
                               'created_at','updated_at','published_by'];

public function pName(){
    return $this->hasOne('App\Models\Product','product_id');
    }
    public function uName(){
        return $this->hasOne('App\Models\User','id');
    }



Function getAllAdminReviews($data){

  $reviews = ProductReview::select('product_review.*,'product_id','user_id')
                      ->with(['pName' => function($pr){
                                $pr->select('product_name');      
                            },
                           'uName' => function($un){
                                $un->select('user_name');        
                            } 
                          ]);
return $reviews;
        }

        }

Product.php

public function pName(){
     return $this->belongsTo('App\Models\ProductReview','product_id');
}

User.php

public function uName(){
    return $this->belongsTo('App\Models\ProductReview','id');
}

输出: 产品 ID:586, 用户 ID:123 pName:空 你的名字:空 其余的东西打印得很好

关系

产品(产品 ID,产品名称), 用户(id,用户名), 产品评论(review_id,product_id,user_id,review_message)

所以我需要根据表product_reviews(user_id,product_id)的id从Users表中获取user_name并从Products表中获取product_name,但它给出null。我希望我的问题很清楚

最佳答案

$reviews = ProductReview::with(['pName', 'uName'])->get();

现在上面将为您提供产品和用户的产品评论。

要添加列选择,您可以使用 relation:foreign_key,column 来选择特定列。如果您在关系预加载中添加选择,则需要选择外键。

所以你可以这样做:

$reviews = ProductReview::with('pName:product_id,product_name')->with( 'uName:user_id,user_name')->get();

请根据您的数据库检查这些外键是否正确

关于php - 无法从 laravel 中的相关表中获取详细信息(使用 with),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54865969/

相关文章:

php - Laravel 从私有(private)方法重定向

laravel - Vue.js:基于计算属性的条件渲染

php - 服务器时间和mysql数据库时间戳之间的秒数差异

mysql - sql - 如何对值进行分组?

mysql - 具有动态 group by 子句的 MySQL 查询应该是什么?

mysql - 反转表列中的 CSV 字符串

php - Laravel 数据库事务不工作

php - 在 mysqli 连接中使用 IP 地址而不是 'localhost' 作为主机名

php - $_SERVER ['REQUEST_METHOD' ] 保证是大写吗?

php - 我如何定制像这样的大型 Facebook 和 Twitter 分享按钮?