在 Laravel 中更新一对一多态的最佳方法是什么?
What is the best way to update One to One Polymorphic in Laravel?
我有一对一多态,我想找到更新现有关系的最佳方式。
class Image extends Model
{
/**
* Get the owning imageable model.
*/
public function imageable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get the post's image.
*/
public function image()
{
return $this->morphOne('App\Image', 'imageable');
}
}
class User extends Model
{
/**
* Get the user's image.
*/
public function image()
{
return $this->morphOne('App\Image', 'imageable');
}
}
关于 PostController 中的更新方法
public function update(Request $request, $id)
{
$post = Post::findOrFail($id);
$post->image()->delete();
$post->image()->save(new Image([
'url'=> $request->input('image_url),
]));
}
How to update Image Relationship without deleting it first?
谢谢
您可以尝试在关系上使用 updateOrCreate
:
$post->image()->updateOrCreate(
[],
['url' => $request->input('image_url')]
);
如果您一直期望有一个 Image
与 Post
相关,您可以直接更新 Image
实例:
$post->image->update([...]);
我有一对一多态,我想找到更新现有关系的最佳方式。
class Image extends Model
{
/**
* Get the owning imageable model.
*/
public function imageable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get the post's image.
*/
public function image()
{
return $this->morphOne('App\Image', 'imageable');
}
}
class User extends Model
{
/**
* Get the user's image.
*/
public function image()
{
return $this->morphOne('App\Image', 'imageable');
}
}
关于 PostController 中的更新方法
public function update(Request $request, $id)
{
$post = Post::findOrFail($id);
$post->image()->delete();
$post->image()->save(new Image([
'url'=> $request->input('image_url),
]));
}
How to update Image Relationship without deleting it first?
谢谢
您可以尝试在关系上使用 updateOrCreate
:
$post->image()->updateOrCreate(
[],
['url' => $request->input('image_url')]
);
如果您一直期望有一个 Image
与 Post
相关,您可以直接更新 Image
实例:
$post->image->update([...]);