之后的关联关系
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 来关联它。
我的问题是:
- 仅使用 php,有没有clean方法将图片关联到之前的post还是之后?
我目前使用的解决方案是,当我转到表单创建一个新的 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 不是一个好主意。所以通过这种方式,如果您遇到任何问题,可以尝试告诉我。
使用的版本: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 来关联它。
我的问题是:
- 仅使用 php,有没有clean方法将图片关联到之前的post还是之后?
我目前使用的解决方案是,当我转到表单创建一个新的 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 不是一个好主意。所以通过这种方式,如果您遇到任何问题,可以尝试告诉我。