我正在尝试展示与我的评论相关的图片。我目前正在获得这个集合实例上不存在的-Property [图片]。我将如何检索与评论相关的图像。
这是我的表格 产品:ID,名称,价格 评论:id,review,products_id_fk 图片:id,image,Reviews_id_fk
这是我的模特 产品:
class Product extends Model
{
public function reviews()
{
return $this->hasMany('App\Reviews','reviews_id');
}
}
评价:
class Reviews extends Model
{
//
public function products(){
return $this->belongsTo('App\Product');
}
public function author()
{
return $this->belongsTo('App\User','user_id');
}
public function pictures()
{
return $this->hasMany('App\Pictures');
}
}
图片型号:
class Picture extends Model
{
//
public function author()
{
return $this->belongsTo('App\User','user_id');
}
public function reviews()
{
return $this->belongsTo('App\Reviews');
}
}
ProductController的:
public function getSingle($slug )
{
//fetch from the database based on slug.
$product = Products::where('slug', '=', $slug)->first();
//return view
return view('products.single')->withProduct($product);
}
查看刀片:
@foreach($product->reviews as $reviews)
<div class="col-md-9">
<div class="content">
<div class="review-info">
<p>{{$reviews->review}}</p>
</div>
<div class="images">
@foreach ($reviews->pictures as $picture)
<img src="{{asset('images/' . $picture->image)}}">
@endforeach
</div>
答案 0 :(得分:0)
您在从图片到评论的关系中缺少外键名称。
图片模型应如下所示:
class Picture extends Model
{
public function author()
{
return $this->belongsTo('App\User','user_id');
}
public function review()
{
return $this->belongsTo('App\Review', 'Reviews_id_fk');
}
}
Review模型应如下所示:
class Review extends Model
{
public function product()
{
return $this->belongsTo('App\Product', 'products_id_fk');
}
public function author()
{
return $this->belongsTo('App\User','user_id');
}
public function pictures()
{
return $this->hasMany('App\Picture', 'Reviews_id_fk', 'id');
}
}
产品型号应如下所示:
class Product extends Model
{
public function reviews()
{
return $this->hasMany('App\Review','products_id_fk');
}
}
默认情况下,Eloquent的命名约定是在图片表上查找名为review_id
的字段,但由于您的命名方式不同,您需要在关系方法中指定它,就像我上面所做的那样。有了这个,你应该能够使用以下内容:
@foreach($product->reviews as $reviews)
...
@foreach($reviews->pictures as $picture)
...
<img src="{{asset('images/' . $picture->image)}}">
@endforeach
@endforeach
如果您在图片模型上将Reviews_id_fk
字段的名称更改为review_id
,则可以省略在关系方法中指定外键和本地键。
我还将一些方法的名称从复数更改为单数,以更好地遵循惯例。模型也应该是单数命名的,因为它们代表单个实体。我也在上面的变化中反映了这一点。
您也可以通过Review模型建立图片与用户之间的关系。
$picture->review->author