In order to create an order from Crinsane based cart and associate it to the (authenticated) user, I created Order model and tried the following in 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 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();
}
}
Edit:
I tried with column type as TEXT (without serialization) as well as JSON. I'm using Json API for front end (Vue) and JWT for authentication.
The column results in an empty set []
when I serialize to JSON. If I don't serialize, it returns O:29:"Illuminate\Support\Collection":1:{s:8:"~~NULL_BYTE~~*~~NULL_BYTE~~items";a:0:{}}
Order Model:
<?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');
}
}
Link to source: https://github.com/riyaz7us/Laraman/tree/master/app/Http/Controllers