0
ブログの投稿フォームに1つの入力フィールド(select2プラグインを使用)があります。これにより、ユーザーはテーブルの既存のタグから投稿タグを挿入したり、新しいタグを作成してタグテーブルに保存したり、投稿ポストボタンを押す。私はarray_filter()
で入力をフィルタリングすることによってこの仕事を得ることができました。もし入力が!is_numeric
であれば、入力は最初にタグテーブルに格納され、次にIDを投稿に添付します。新しい投稿タグがテーブルに存在しない場合は保存しますか?
この問題は、入力の新しいタグが2017
タグのような完全な数値型の場合には機能しないということです。新しいタグが文字列だけでなく数値型に限定されないように、これを実行するソリューションがありますか?可能であれば、私はこれにパッケージを使用したくありません。
ポストストア方法:
public function store(PostsReq $request) {
$input = $request->all();
$post = Post::create($input);
//Handle the tags
$getTags = $request->input('tagspivot');
$oldTags = array_filter($getTags, 'is_numeric');
$newTags = array_filter($getTags, function($item) {
return !is_numeric($item);
});
foreach ($newTags as $newTag) {
if ($tag = Tag::create(['title' => strtolower(trim($newTag))])) {
$oldTags[] = $tag->id;
}
}
$post->tags()->attach($oldTags);
// Upload Image
if ($request->hasFile('image')) {
$input['image'] = $this->uploadImage($request, $post);
}
return redirect()->route('postindex')->with($this->postStoreSuccess);
}