产品数据已存储在数据库中,但数据无法显示在愿望清单页面中。我该如何解决?
public function wishList(Request $request)
{
$products = wishlist::where('wishlist.pro_id','=','products.id')->get();
return view('wishlist',compact('products'));
}
public function addWishList(Request $request){
$wishList = new wishList;
$wishList->user_id = Auth::user()->id;
$wishList->pro_id = $request->pro_id;
$wishList->save();
}
这是我要显示产品的愿望清单页面。 是无法从数据库中获取数据吗?
<tbody>
@forelse($products as $product)
<tr>
<td>
<img src="{{url('/assets/images/products')}}/{{\App\Product::findOrFail($product->product)->feature_image}}" alt="">
</td>
<td>
/*product name*/
<a href="{{url('/product',$product->id)}}">
{{$product->title}}
</a>
</td>
</tr>
@empty
<tr>
<td colspan="6">
<h3>Your WishList Is Empty</h3>
</td>
</tr>
@endforelse
<tr>
<td colspan="4">
<a href="{{url('/')}}" class="shopping-btn">{{$language->continue_shopping}}</a>
</td>
</tr>
</tbody>
答案 0 :(得分:1)
我认为问题出在愿望清单查询中:
$products = wishlist::where('wishlist.pro_id','=','products.id')->get();
这将产生sql查询
SELECT * FROM wishlist WHERE wishlist.pro_id = 'products.id'
它不会引发mysql异常,因为'products.id'是字符串,我不认为这是您想要的查询。
我认为您必须在products
表上加入愿望清单,然后
使用whereRaw
或where(DB::raw('...')
查询生成器语法
whereRaw:
Wishlist::whereRaw('wishlist.pro_id = products.id')->get()
其中:
Wishlist::where(DB::raw('wishlist.pro_id = products.id'))->get()
答案 1 :(得分:0)
尝试使用@foreach代替@forelse
@foreach($products as $product)
<tr>
<td>
<img src="{{url('/assets/images/products')}}/{{\App\Product::findOrFail($product->product)->feature_image}}" alt="">
</td>
<td>
/*product name*/
<a href="{{url('/product',$product->id)}}">
{{$product->title}}
</a>
</td>
</tr>
@endforeach
@else
<tr>
<td colspan="6">
<h3>Your WishList Is Empty</h3>
</td>
</tr>
@endif
答案 2 :(得分:0)
首先,在执行查询的同一行中调用属性是一种不好的做法。另外,在控制器中,您在模板中将产品ID称为prod_id,而在模板中将其称为产品。
<tbody>
@forelse($products as $product)
<tr>
<td>
@php
$prod = \App\Product::findOrFail($product->prod_id)) // prod_id not product
@endphp
@if($prod)
<img src="{{url('/assets/images/products')}}/{{ $prod->feature_image }}" alt="">
@endif
</td>
<td>
/*product name*/
<a href="{{url('/product',$product->id)}}">
{{$product->title}}
</a>
</td>
</tr>
@empty
<tr>
<td colspan="6">
<h3>Your WishList Is Empty</h3>
</td>
</tr>
@endforelse
<tr>
<td colspan="4">
<a href="{{url('/')}}" class="shopping-btn">{{$language->continue_shopping}}</a>
</td>
</tr>
</tbody>
我不确定您是否打算将$ product-> title用作愿望清单对象或在模板上创建的产品查询的一部分。如果您要查询产品查询,则将其余代码包含在if条件中,并使用$ prod-> title