之后关联关系

时间:2017-02-02 11:47:14

标签: laravel laravel-5 laravel-5.4

使用的版本: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,是否有 clean 方式将图片与之前或之后的帖子相关联?

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

1 个答案:

答案 0 :(得分: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));
}

更改你的postid图像上传路径。例如

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

创建一条路线来编辑帖子并用它来编辑将有帖子ID的帖子。

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

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

在网址中显示ID并不是一个好主意。所以通过这种方式你可以试着告诉我你是否遇到任何问题。