【问题标题】:How to insert data using relation?如何使用关系插入数据?
【发布时间】:2015-09-09 05:20:35
【问题描述】:

我有两张桌子

帖子

id|post_title|post_content

post_images

id|images|post_id

控制器

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 表中存储帖子图片和帖子 ID?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    像这样重写你的代码

    class Post extends Model
    {
        protected $table = 'posts';
        //add $fillable here
        protected $fillable = ['post_title', 'post_content'];
    
        public function images()
        {
            return $this->hasMany(App\PostImage::class);
        }
    }
    
    
    class PostImage extends Model
    {
    
        protected $table = 'post_images';
        //add $fillable here
        protected $fillable = ['images', 'post_id'];
    
        public function post()
        {
            return $this->belongsTo(App\Post::class);
        }
    }
    

    现在在你的控制器中

    Post::create($request->all())->images()->create($request->all());
    

    这里 Post create 将您的数据也保存到数据库 returns the object 然后 您访问 relation images 并将数据保存到 images

    更多详情请看这里One To Many

    【讨论】:

    • .简直太棒了。非常感谢。它工作正常。假设我有多个图像可以插入多行
    • 我正在从输入文件中选择多个图像
    • 是的,如果您将输入作为数组,例如 <input name="files[]" /> 它也会插入多行
    • 嗨,如果我添加图像数组,那么它不会插入到我的图像表中。在我看来,如果我有 则不会工作。如果我有 然后它工作
    猜你喜欢
    • 2021-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多