Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为Laravel中的多行插入中的字段设置固定值_Php_Mysql_Sql_Laravel - Fatal编程技术网

Php 为Laravel中的多行插入中的字段设置固定值

Php 为Laravel中的多行插入中的字段设置固定值,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我有一个数组$cart: 我能行 DB::table('order_products')->insert($cart); 但是我需要将这个数组插入到一个具有相同列+order\u id的表中。order\u id对于所有行都是相同的,它是上一个查询的insert id。是否可以为所有行的订单id设置一个固定值?当您使用雄辩的模型并且您的订单模型具有多个关系订单产品时,您可以在关系上使用以下方法: $order->order_products()->createMany($ca

我有一个数组$cart:

我能行

DB::table('order_products')->insert($cart);

但是我需要将这个数组插入到一个具有相同列+order\u id的表中。order\u id对于所有行都是相同的,它是上一个查询的insert id。是否可以为所有行的订单id设置一个固定值?

当您使用雄辩的模型并且您的订单模型具有多个关系订单产品时,您可以在关系上使用以下方法:

$order->order_products()->createMany($cart);
对于save和saveMany方法以及create和createMany,如果在关系上调用,则案例order_id中的外键将自动设置为从父$order实体获取

在中,您还可以找到以下注释:

在使用create方法之前,请确保查看文档 在属性上

最重要的是$fillable属性,您已经找到了它

注意,您还应该能够为订单本身使用create。我不知道为什么它对你不起作用。检查订单模型中的$fillable属性。另外,订单通常属于用户-因此需要分配用户id,该id可能在数组中丢失。能起作用的是

$order = Auth:user()->orders()->create($orderArray);

用户id将从Auth:user获取并自动分配给订单。

为什么不在初始化$cart之前获取订单id,然后执行foreach循环,在中添加订单id,或者只是手动将其作为到达行数组的一部分?$cart在返回订单id的插入之前初始化;如果有一种方法在SQL查询中设置固定值,那么Frack循环是不必要的并且可能是昂贵的。请考虑一下这一点:@ Fralkz,所以我会做订单=新订单;订单->保存;。然后?订单->订单产品->保存$cart;并且订单id将从订单中复制?如果无效,请尝试/查看文档。关于创建,这是我的代码:。Laravel只看到了数组的第一个元素,因此错误是状态字段没有默认值$order=Auth:user->orders->create$orderArray;说得好,我也应该添加这种关系。@SamuelShifterovich-我想$filleble中缺少状态。但你的代码是好的,因为它是。使用create不会赢得任何东西。您认为可以做的是:$order=新订单$订单->填写$address$订单->用户id=$user\U id$订单->状态=配置'app.default_status'$订单->保存;-并保存一些代码行。使用save,我不需要$filleble中的状态。而且,它不是来自用户输入/请求$order->status=config'app.default_status';我尝试将create与$orderData一起使用,但仍然得到相同的错误。所以我尝试了$order=Auth::user->orders->create[status=>test'];,但我仍然得到SQLSTATE[HY000]:一般错误:1364字段“status”没有默认值SQL:insert-into-orders用户id值1
$order = Auth:user()->orders()->create($orderArray);