После обновления 5.3 разработчики laravel не могут получить доступ к переменной сеанса в конструкторах. Вопрос - как настроить CartController со свойствами, основанными на идентификаторе корзины сеанса?
Просто например:
class CartController extends Controller
{
public $cartId;
public $cartProducts;
public function __construct()
{
$this->cartId= $this->getCartId();
$this->cartProducts = $this->getCartProducts();
}
public function getCartProducts()
{
return CartProduct::with('product')->where('id_cart', $this->getCartId())->get();
}
public function getCartId()
{
$sessionCartId = Session::get('cartId');
$cookieCartId = Cookie::get('cartId');
if ($cookieCartId) {
$cartId = $cookieCartId;
Session::put('cartId', $cartId);
} elseif ($sessionCartId) {
$cartId = $sessionCartId;
Cookie::queue('cartId', $cartId, 10080);
} else {
$cartId = $this->setNewCart();
}
return $cartId;
}
В этом примере, когда я вызываю через ajax getCartProducts (), чтобы получить список продуктов, мне нужно вызвать метод getCartId () вместо свойства $ this-> cartId. Это не плохо , но , когда я вызываю более сложные действия, такие как удаление и обновление таблиц, метод getCartId будет вызываться несколько раз, вызывая несколько запросов. Теперь, если бы я мог получить доступ к свойству, я мог бы получить cartId в одном запросе.
Так вот вопрос - как решить эту проблему?