簡體   English   中英

Laravel - 在字符串上調用成員 function save()

[英]Laravel - Call to a member function save() on string

我無法將一系列項目從 session 保存到 mysql 數據庫,但出現錯誤:

"Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Call to a member function save() on string"

當我執行 dd(Dump and Die) 時,數組顯示如下:

    "{"1":{"name":"Bajiya","quantity":4,"price":"34.00"},
    "2":{"name":"Gulha","quantity":2,"price":"3.00"},
    "3":{"name":"kavaabu","quantity":1,"price":"2.00"}}"

下面是controller商店function:

public function storeCart(Request $request){

    $cart = new Cart;
    $cart= session()->get('cart');
    $cart =  json_encode($cart);
    $cart->save();
}

我的數據庫中有一個表,其中包含 id 和 cart 列。 我希望將上面的數組保存在購物車列中。

謝謝

每次覆蓋之前的變量$cart

$cart = new Cart; //put into $cart instance of Cart class
$cart = session()->get('cart'); // overwrite other data to variable $cart
$cart = json_encode($cart); // json_encode converts object/array to json (so at this moment you overwrite string to variable `$cart`
$cart->save(); //you're trying to call function on json)))

請嘗試了解您到底想做什么))

適用於下面的 function。

public function storeCart(Request $request){

    $cart = new Cart();
    $cart->cart = $request->session()->get('cart');
    $cart->save();
    $request->session()->forget('cart');
    return redirect()->route('/');
}

用一個簡單的術語來解釋我的解釋,您需要指向數據庫中將保留記錄的列。 代碼可能如下所示

$cart = new Cart;
$cart->name= session()->get('name');
$cart->quantity =  session()->get('quantity');
$cart->price =  session()->get('price');
$cart->save();

由於您要保存一組項目,因此您可能希望使用 foreach 並且代碼將更改為如下所示:

foreach ($cart as $item){
  $item->name= session()->get('name');
  $item->quantity =  session()->get('quantity');
  $item->price =  session()->get('price');
  $item->save();
}

您可能還需要考慮使用關系。 希望這有意義並有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM