正在尝试从用户表和productname获取producttreview.php中的productname,但其返回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('AppModelsProduct','product_id');
}
public function uName(){
return $this->hasOne('AppModelsUser','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('AppModelsProductReview','product_id');
}
user.php
public function uName(){
return $this->belongsTo('AppModelsProductReview','id');
}
输出:product_id:586,USER_ID:123pname:nulluname:null其余的东西都很好地打印
关系
产品(product_id,product_name),用户(id,user_name),product_reviews(eview_id,product_id,user_id,eview_message)
因此,我需要根据表product_reviews的ID(user_id,product_id)的ID来从用户表和product_name中获取user_name,但它给出了null.i希望我的问题清楚
$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();
请根据数据库检查这些外键是否正确
问题是我没有传递孩子的身份证,正确的实施是
productreview.php
public function productName(){
return $this->hasOne('AppModelsProduct','product_id','product_id');
}
public function userName(){
return $this->hasOne('AppModelsUser','id','user_id');
}
$reviews = ProductReview::with(['productName' => function($pr){
$pr->select('product_name','product_id');
},
'userName' => function($un){
$un->select('fname','id');
}
]);