РЕДАКТИРОВАТЬ: исправлены опечатки (сделано при переводе некоторого кода)
Я строю корзину с Laravel 6.11 (MAMP). Я получаю пару ошибок, которые сводят меня с ума. Пожалуйста помоги! Сначала я дам вам код, затем ошибки:
Тележки для таблиц:
id
order_date
arrived_date
status
user_id
Таблица cart_details:
id
cart_id
product_id
quantity
discount
Обратите внимание, что две таблицы ПУСТАЯ на данный момент, записи пока не вставлены.
В корзине может быть много деталей. Таким образом, в корзине. php у меня есть:
class Cart extends Model
{
public function details()
{
return $this->hasMany(CartDetail::class);
}
}
CartDetailController содержит:
class CartDetailController extends Controller
{
//let's insert data in cart_details so the order can be created
public function store(Request $request)
{
$cartDetail = new CartDetail();
$cartDetail->cart_id = auth()->user()->cart_identification;/* cart_id from the logged user. In User.php I have getCartIdentifitacionAttribute, I'm going to put the code right after this */
$cartDetail->product_id = $request->product_id;
$cartDetail->quantity = $request->quantity;
$cartDetail->save();
return back();
}
}
У пользователя. php У меня есть:
public function carts()
{
return $this->hasMany(Cart::class); //a user can have many carts
}
public function getCartIdentificationAttribute()
{
$cart = $this->carts()->where('status','Active')-> first();
if($cart)
{
return $cart->id;
}
else// if there's no cart, let's create a new one
{
$cart = new Cart();
$cart->status = 'Active';
$cart->user_id = $this->id;
$cart->save();
return $cart->id;
}
}
.blade (который покажет администратору детали заказа):
@foreach (auth()->user()->cart_identification->details as $detail)
<ul>
<li>{{ $detail }}</li>
</ul>
@endforeach
А теперь ошибки две ... безусловно связаны: (
В страница продукта после нажатия «Добавить в корзину»:
BadMethodCallException Вызов неопределенного метода Illuminate \ Database \ Eloquent \ Relations \ HasMany :: fisrt ()
Если я печатаю $this->carts()->where('status','Active')
, это работает, когда я добавляю ->fist()
, ошибка показывает
При доступе к блейду как администратор должен сделать для обработки заказа:
Facade \ Ignition \ Exceptions \ ViewException Вызов неопределенного метода Illuminate \ Database \ Eloquent \ Relations \ HasMany :: fisrt () (Просмотр: /Applications/MAMP/htdocs/app-shop/resources/views/home.blade.php)
Если я печатаю auth()->user()
, это работает, это это auth()->user()->cart_identification
, который вызывает ошибку.
Чего мне не хватает ??
Спасибо за тонну !!