我的車模型有:的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