我试图从我的 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/