Closed Power50015 closed 5 years ago
May be you are using find method or getting a relation from a model like $item->model .... they are automatically search by (id) column but your primary key is product_id .... In my mind you can 1- Change your primary key in your product model protected $primaryKey = 'product_id'; 2- Change your primary key in products migration table
@taha7 Thank's man I try That but it gives me a new error
Please keep this in mind (as already mentioned) : https://laravel.com/docs/5.8/eloquent#eloquent-model-conventions
@bumbummen99 I hope if I can understand you or understand what to do?
@Power50015 I just left the link to the eloquent model conventions. By looking at your migration i can see that you are not holding to the default naming by eloquent, therefore you have to overwrite them manually, as @taha7 mentioned. Hope it helps in the future 👍
As for your second issue, are you sure that product_name is not null for this instance?
@bumbummen99 yes my friend it isn't null.
@Power50015 Ahh, i think i have found the answer ^^ https://github.com/Crinsane/LaravelShoppingcart#models It says that the Model has to implement the Buyable interface for the association to work.
if ($id instanceof Buyable) {
$cartItem = CartItem::fromBuyable($id, $qty ?: []);
$cartItem->setQuantity($name ?: 1);
$cartItem->associate($id);
} elseif (is_array($id)) {
@taha7 @bumbummen99 Can you please take a look at my Code and Tell me exactly what I need to do because of I completely new in larval and in need some help, please https://github.com/Power50015/fup
Hehe i think i won't need the whole code ^^ I think this Product model should do the trick:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Gloudemans\Shoppingcart\Contracts\Buyable;
class Product extends Model implements Buyable
{
public function presentPrice()
{
$price = $this->product_price;
return "$" . $price;
}
/**
* Get the identifier of the Buyable item.
*
* @return int|string
*/
public function getBuyableIdentifier($options = null) {
return $this->product_id;
}
/**
* Get the description or title of the Buyable item.
*
* @return string
*/
public function getBuyableDescription($options = null) {
return $this->product_name;
}
/**
* Get the price of the Buyable item.
*
* @return float
*/
public function getBuyablePrice($options = null) {
return $this->product_price;
}
}
@bumbummen99
Why Code hate me so much
Don't worry you are close 👍 I tought you are using the official version of the package. Assuming you are using my fork you have to also define a getter method for the product weight. If you do not need any weight calculations (for shipping) you can just 0 everything as it will not affect the other calculations.
/**
* Get the weight of the Buyable item.
*
* @return float
*/
public function getBuyableWeight($options = null) {
return 0; //return $this->weight;
}
By writing class Product extends Model implements Buyable
you say that your Product implements the Buyable Interface (It's called a Contract in Laravel) and it's abstract methods. Also if you do not already have one i suggest to install an extension for intellisense and php, this has saved me hours already.
@Power50015 Did you solve the problem ?
first of all, I already use a bumbummen99 fork.
I fix it by only Two lines of code in product model
protected $primaryKey = 'product_id'; public $incrementing = false;
Now I have a
compleatly new error when I try to remove.
actually I fix it too by this line of code
<form action="{{ route('cart.destroy', $item->rowId)}}" method="POST">
thanks guys
Using laravel 5.8 Please help