Php 如果模型id是隐藏字段,如何同步?

Php 如果模型id是隐藏字段,如何同步?,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我正在尝试将数据同步到我的模型的透视表。但是我的Recipe模型有一个隐藏的id字段。像这样, protected $hidden = ['id', 'content', 'difficulty_id']; 当我尝试将关系同步到透视表时,recipe\u id变为零。如果我从上面的$hidden中删除id,它会毫无问题地同步id。我还尝试调用模型的makeVisible(“id”),但没有帮助 $changedMeals = $record->meals()->sync($meal

我正在尝试将数据同步到我的模型的透视表。但是我的
Recipe
模型有一个隐藏的
id
字段。像这样,

protected $hidden = ['id', 'content', 'difficulty_id'];
当我尝试将关系同步到透视表时,
recipe\u id
变为零。如果我从上面的
$hidden
中删除
id
,它会毫无问题地同步id。我还尝试调用模型的
makeVisible(“id”)
,但没有帮助

$changedMeals = $record->meals()->sync($meals);
id
保存在
$hidden
中时如何同步


非常感谢…

目前,我使用pivot,在primary中隐藏$hidden,而在pivot中不使用foreign,我使用
sync($request->field\u to\u sync)
和我使用validator来验证ID,这很有效

例如:

因此,我假设您在代码中使用了
sync()
,而没有使用
Request::input()
,您可以尝试以下方法:

$meals = Meals::select('id')->get()
->map(function($value, $key){
  return $value->setVisible(['id']);
});
然后你可以像这样使用
sync()

Recipe::find(1)->meals()->sync($meals);
Recipe::find(1)->meals()->sync($meals);