在我的(Laravel)应用程序中,接收一个JSON,如下所示:
{
"name": "order 1",
"customer": "cus123",
"orderItems": [
{
"amount": 1,
"name": "cola",
"price": "2.10"
},
{
"amount": 3,
"name": "fanta",
"price": "2.00"
},
]
}
我已经在Laravel中创建了两个模型,一个Order
和一个OrderItem
。我想将接收到的JSON解析为一个Order
示例$order
。我可以在OrderController
中这样做:
class OrderController extends Controller
{
public function store(Request $request) {
$order = new Order();
$order->forceFill($request->toArray());
}
}
现在可以在控制器的store
函数中访问$order->name
和$order->customer
等属性。当我访问$order->orderItems
时,我收到一个包含“orderItems but as array, not as instance of
OrderItem”的数组。
我希望$order->orderItems
返回一个OrderItem
示例的数组。我在Order
中尝试了以下操作,但这不起作用,因为'orderItems'
不是OrderItem::class
,而是一个具有多个“OrderItems”的数组。
protected $casts = [
'orderItems' => OrderItem::class,
];
我怎样才能让$order->orderItems
返回一个OrderItem
示例数组呢?谢谢你的帮助!
2条答案
按热度按时间km0tfn4u1#
尝试将以下内容添加到控制器
。
也可以在一个命令中创建多个子项。
阅读此处了解更多信息https://laravel.com/docs/9.x/eloquent-relationships#the-save-method
您可以将其作为额外的自定义方法移动到模型中。例如:
你称之为
$order->saveOrderItems($orderItems);
附言
不要忘记在Order模型中声明关系。
3xiyfsfu2#
我想你对整个模型关系感到困惑。检查文档here,你需要在你的订单和订单项模型之间定义正确的关系和外键。
那么你的模型应该是这样的;
那你的店法