之后的关联关系

Associate relationship afterwards

使用的版本:Laravel 5.4

我们有一个 post 并且 post 可以关联多张图片。我们使用一个控制器来存储 post 和另一个存储图片。

我们在模型中设置关系如下:

class Post extends Model
{
    public function pictures()
    {
        return $this->hasMany(Picture::class);
    }
}

class Picture extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}

当我去表格创建一个新的 post 时,我可以向其中添加图片 post before 我实际上存储了 post.这意味着当我存储图片时,我仍然没有 post id 来关联它。

我的问题是:

我目前使用的解决方案是,当我转到表单创建一个新的 post 时,会事先创建一个空白的新 post,然后我将 id 传递给 url。它必须是更好的方法。

你可以试试这个

首先在用户访问创建 post 页面时创建表单(正如您已经在做的那样)。

假设这是显示创建 post 视图的函数

public function showCreatePost()
{
   $post = Post::create(['field_name' => '', // put your attributes]);

 // pass other data as well if you want.
   return view('your_create_view',compact('postId',$postId));
}

更改您的图片上传路径,其中包含 postid 。例如

Route::post('post/image/{postId}','SomeController@somefunction');

创建一个用于编辑 post 的路由,并将其用于编辑 post 的 post id。

Route::post('post/edit/{postId}','SomeController@someOtherfunction');

现在将这两条路线用作表单操作,您可以编辑 post 并上传图片。下面的路线示例

在 url 中显示 ID 不是一个好主意。所以通过这种方式,如果您遇到任何问题,可以尝试告诉我。