我的车模型有:的hasMany关系
public function product() {
return $this->hasMany('App\Product');
}
我的产品型号有:
public function cart() {
return $this->belongsTo('App\Cart');
}
我的数据库看起来像:
车表:
产品表:
我的购物车迁移包含:
$table->integer('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
我控制器包含:
public function index()
{
if(Auth::check())
{
$user = Auth::user();
$cart = Cart::where('user_id',$user->id)->get();
return view('products.cart')->withCart($cart);
}
else {
return view('products.cart');
}
}
它检查是否用户在随后登录其得到所有细节购物车的用户名与当前用户相匹配。这是行得通的。
但是当我去product.cart页我尝试:
@foreach($cart->product as $p)
{{dd($p->name)}}
@endforeach
我得到错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$product (View: D:\wamp64\www\ecommerce\resources\views\products\cart.blade.php)
你能告诉我如何与获得从产品表中的值这种关系。
谢谢!
编辑:
尝试不同的方法后,我得到了:
车型号:
public function product() {
return $this->hasMany('App\Product','id','product_id');
}
车控制器:
public function index()
{
if(Auth::check())
{
$user = Auth::user();
$cart = Cart::where('user_id',$user->id)->first();
return view('products.cart')->withCart($cart);
}
else {
return view('products.cart');
}
}
现在我能得到第一个产品与id匹配。
有没有办法让符合
将产品存储在购物车表中并不是一个真正的好方法。我会在会话中存储购物车的内容。 –
'hasMany'的反转是'belongsTo'。你需要使用它。请参阅[文档](https://laravel.com/docs/5.3/eloquent-relationships)。我的猜测是,它应该是_product属于cart_。 – linuxartisan
@linuxartisan更改为'belongsTo'后出现相同的错误 – Phoenix