Php 如何使用关系插入多个数据?

Php 如何使用关系插入多个数据?,php,Php,控制器 public function AddPost(Request $request) { Post::create($request->all()); // PostImage::create(); return Redirect::to('Post'); } 我还增加了关系 class Post extends Model { protected $table = 'posts'; public function images()

控制器

public function AddPost(Request $request)
{
    Post::create($request->all());
    // PostImage::create();
    return Redirect::to('Post');
}
我还增加了关系

class Post extends Model
{
    protected $table = 'posts';

    public function images()
    {
        return $this->hasMany('App\PostImage');
    }
}
后期图像
型号

class PostImage extends Model
{
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}

我有一个表单,我可以添加文章标题、文章内容并选择多个图像。我的问题是如何在post_images表中存储多个图像以及post id?

您可以这样做:

Post::create($request->all())->images()->create([$request->get('images')]);

您可以对关系使用恰当命名的
createMany()
方法:

// Create post
$post = Post::create($request->except('images'));

// Create post images
foreach ($request->get('images') as $images) {
    $post->images()->create(compact('images'));
}

就像以前的帖子一样。。。您是否尝试过使用saveMany方法?实际上,你可以这样简单地使用它

Laravel文档中的示例本身就说明了这一点

可以使用简单的save方法保存单个实例

$comment = new App\Comment(['message' => 'A new comment.']);

$post = App\Post::find(1);

$comment = $post->comments()->save($comment);
如果关系的“多”部分有多个实例,则可以使用saveMany()

这两种方法都将自动设置post_id值。如果你想手动设置,你应该得到你需要的post_id,然后像这样手动设置

$comment->post_id = $yourDesiredPostId;
。。。最后,和往常一样

$comment->save();
注意:我使用了Laravel文档示例,但是您在这里需要做的就是更改名称和类。机制总是一样的


希望有帮助。

。谢谢。我有多张图像,希望将每张图像存储为row@vision我认为它可以工作,它的工作原理类似于
createMany()
Hi its not working..它在images表中生成具有post id的单行。没有图像也没有多行。它将不工作。它将只在images表中添加post id而不是图像。只有单行将add@vision你把你的列设置成可填充的了吗?是的。如果我删除文件输入名数组,那么它将插入带有image@vision我想我可能打错了。我已经更新了我的答案。@Martin Bean.no这段代码甚至没有将记录插入到图像表中。我想我需要循环。我使用的是单一表单,其中我在Post模型中使用一些数据,在Post图像表中使用多个图像。原理总是一样的。。。首先,创建您的帖子,然后可以使用save或saveMany将多个图像附加到帖子上,从images()关系开始:)
$comment->save();