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();