如何将Laravel Crinsane购物车数据添加为订单?
为了从基于Crinsane的购物车创建订单并将其与(经过身份验证的)用户关联,我创建了订单模型,并在order controller中尝试了以下操作如何将Laravel Crinsane购物车数据添加为订单?,laravel,eloquent,shopping-cart,laravel-6,laravel-controller,Laravel,Eloquent,Shopping Cart,Laravel 6,Laravel Controller,为了从基于Crinsane的购物车创建订单并将其与(经过身份验证的)用户关联,我创建了订单模型,并在order controller中尝试了以下操作 <?php namespace App\Http\Controllers; use Cart; use App\Order; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use
<?php
namespace App\Http\Controllers;
use Cart;
use App\Order;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
class OrderController extends Controller
{
public function __construct()
{
$this->middleware('auth:api');
}
/**
* store cart to authenticated user as order.
*
*/
public function store(Request $request)
{
$order = new Order;
$cartcontent = Cart::content();
$user = auth('api')->user();
$serializedcontent = $cartcontent->toJson(); //Returns []
//$serializedcontent = $cartcontent->toArray(); //error
//$serializedcontent = str_replace("\0", "~~NULL_BYTE~~", serialize($cartcontent)); //returns 0:29:"Illuminate....
$order->user_id= $user->id;
$order->cart_content= $serializedcontent;
$order->save();
}
}
链接到源:来自
购物车::内容()当然,您还希望获取购物车的内容。这
是您将使用内容方法的地方。此方法将返回一个
您可以迭代并显示的CartItems集合
满足于你的客户
您正试图在数据库中插入集合。您需要从基于Crinsane的卡的当前实例中获取数据,然后将数据作为
json
或任何适合您需要的东西。仍然不起作用。已编辑的购物车控制器存储方法:cart::instance('shopping')->添加([//产品])
。将订单控制器修改为Cart::instance('shopping')->content()代码>。它返回O:29:“照亮\支持\收集”:1:{s:8:"
。当序列化或json时,它返回一个空数组。您可以用更多代码编辑帖子吗?如何序列化?数据库列的类型是什么?您的mysql应用程序中是否启用了严格类型?如何获取/重新运行数据库结果以显示它?它是否作为json或json保存在数据库中这只是一个空字符串?你能提供订单的型号吗?可填充、受保护、隐藏等。这里有一个关于如何序列化数据的文档链接编辑了这个问题。为了方便起见,还添加了到源代码的链接。我不知道为什么你在可填充文件中有2倍的用户id,但你可以删除其中一个。还要检查这个这是可以解决您的问题的store()
方法。我现在得到了它。我在web路由中使用了我的购物车控制器(用于会话),在api路由中使用了签出控制器。无论如何,如果我使用vue、vuex store而不是crinsane来存储我的购物车会怎么样?
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
protected $fillable = [
'user_id','user_id','cart_content'
];
public function User(){
return $this->belongsTo('App\User');
}
}