Laravel更新多态模型

时间:2013-11-24 08:59:10

标签: laravel pivot-table eloquent

我有两个具有多态关系的模型,一个名为 Article ,另一个名为 Image 。我发布了一个Image id的数组,以便更新数据集。据我所知,Eloquent没有用于多态关系的 sync()方法,在使用时可以使用 sync()透视表。

$article = new Article();

foreach (Input::file('images') as $file) {
   $image = new Image();
   $image->file_name = $file-> getClientOriginalName();
   $article->images()->save($image);
}

更新的存根代码:

$article = Article::findOrFail($id);
$ids = Input::get('images'); // array('1', '3', ...);
$article_image_ids = $article->images()->lists('id'); // array('1','2','3', …);

如何保存已发布的ID并确保文章图像数据得到更新?

1 个答案:

答案 0 :(得分:1)

我对你要找的东西感到有点困惑,但你可以做同样的事情来同步。

// This will take care of the deletion of images already in place for said article.
Image::where('imageable_type', 'Article')->where('imageable_id', $article_id)->delete();

// This will insert the desired records back
$article = Article::find($article_id)
foreach($ids as $image_id) {
    $image = Image::find($image_id):
    $article->images()->save($image);
}