0

使用的版本:Laravel 5.4

我们有一个帖子,该帖子可以有几张与之关联的图片。我们使用一个控制器来存储帖子,而另一个控制器来存储图片。

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

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

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

当我转到表单创建新帖子时,我可以在实际存储帖子之前将图片添加到该帖子。这意味着当我存储图片时,我仍然没有将其关联到的帖子 ID。

我的问题是:

  • 使用php,是否有一种干净的方法可以在之前或之后将图片与帖子相关联?

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

4

1 回答 1

0

你可以试试这个

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

假设这是您显示创建帖子视图的函数

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

更改您的 imageupload 路线,该路线将具有 postid 。例如

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

创建一条用于编辑帖子的路线,并将其用于编辑将具有帖子 ID 的帖子。

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

现在将这两个路由用作表单操作,您可以编辑帖子并上传图像。下面的路线示例

在 url 中显示 id 不是一个好主意。所以通过这种方式,您可以尝试让我知道您是否遇到任何问题。

于 2017-02-02T13:47:00.370 回答