Laravel使用另一个模型更新模型

Laravel使用另一个模型更新模型,laravel,eloquent,Laravel,Eloquent,我想用除其他模型id之外的所有字段更新数据库中的一个模型 例如,我有两个模型 Model1: { "id":1, "name":"Name1", "address":"Adress1", "phone":"1234567" } Model2: { "id":null, "name":"Name2", "address":null, "phone":"777777" } 如何使用model2值更新model1,使model1具有m

我想用除其他模型id之外的所有字段更新数据库中的一个模型

例如,我有两个模型

Model1: {
    "id":1,
    "name":"Name1",
    "address":"Adress1",
    "phone":"1234567"
}

Model2: {
    "id":null,
    "name":"Name2",
    "address":null,
    "phone":"777777"
}
如何使用model2值更新model1,使model1具有model2中除id之外的所有值

{
    "id":1,
    "name":"Name2",
    "address":null,
    "phone":"777777"
}

p.S.fill方法忽略空值,forceFill使用空值,但也使用数组中的其他字段,例如属性字段。

使用attributesToArray和fill。属性需要是可填充的

$properties = array_only($model1->attributesToArray(), ['name', 'address', 'phone']);

$model2->fill($properties);

您是否尝试使用except?将model2转换为array,id除外,然后用此数组填充model1?是的,我试过了,这种方式使model1忽略地址字段的空值。fill方法忽略空值你能解释一下吗,fill不忽略空值输入,你怎么能在数据库中将值设置为空值?或者你可以使用array_except和exclude id:mrhn谢谢你的回答,是的,你的回答是正确的,fill方法不忽略空值。我在使用$model=newmodel$request->all创建模型时存在误解。以这种方式创建模型时,未使用的字段不存在,因此当我将模型转换为数组时,没有未使用的模型值。例如,如果我的请求具有name=name1,并且我创建了create$model=new model$request->all。使用您的方法创建数组后,我得到[name=>name1],但该数组中没有值id=>null,address=>null。这就是我的问题。但是如果它们为null,为什么需要传递它们,它们将默认为null?但是您可以使用受保护的$attributes=['address'=>,'phone'=>null]定义默认值;在你的模型上,它们应该被发送。