在数据库中动态存储数据

时间:2019-10-28 13:52:19

标签: laravel

我想将文章输入动态保存在数据库中这是我现在的代码,并且我想以动态方式保存paragraph_two,paragraph_list和paragraph_three,我应该如何更改代码?

ArticleController:

public function store(Request $request)
    {
        $index_imageName = $request->file('index_image')->store('uploads');
        $header_videoName = $request->file('header_image')->store('uploads');
        $text_imageName = $request->file('text_image')->store('uploads');

        $new_file_data=[
            'small_explain'=>$request->input('small_explain'),
            'title'=>$request->input('title'),
            'paragraph_one'=>$request->input('paragraph_one'),
            'paragraph_two'=>$request->input('paragraph_two'),
            'paragraph_list'=>$request->input('paragraph_list'),
            'paragraph_three'=>$request->input('paragraph_three'),
            'important_body'=>$request->input('important_body'),
            'quote'=>$request->input('quote'),
            'author_quote'=>$request->input('author_quote'),
            //image storage
            'index_image' => $index_imageName,
            'header_image' => $header_videoName,
            'text_image' => $text_imageName,
            ];
        Article::create($new_file_data);
    }

这是刀片的一部分:

<div class="form-group row" id="paragraph">
                        <label class="col-12 col-sm-3 col-form-label text-sm-right">پاراگراف اول</label>
                        <div class="col-12 col-sm-8 col-lg-6">
                            <textarea required="" class="form-control" id="paragraph" name="paragraph_one"></textarea>
                            <br>
                            <button type="button" class="btn " id="button" onclick="myFunction()"
                                    style="color: white ; background-color: #242849">افزودن پاراگراف
                            </button>
                        </div>
                    </div>
                    @section('scripts')
                        <script>
                            function myFunction() {
                                var x = document.createElement("TEXTAREA");
                                var t = document.createTextNode("اینجا بنویسید");
                                x.appendChild(t);
                                document.getElementById("paragraph").appendChild(x);
                            }
                        </script>
                    @endsection

迁移:

public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('index_image');
            $table->string('small_explain');
            $table->string('title');
            $table->string('paragraph_one');
            $table->string('paragraph_two');
            $table->string('paragraph_list');
            $table->string('paragraph_three');
            $table->string('header_image');
            $table->string('important_body');
            $table->string('text_image');
            $table->string('quote');
            $table->string('author_quote');
            $table->timestamps();
        });
    }

我是laravel的新手,我真的不知道我的代码需要进行哪些更改才能使其动态 通过动态的意思是:我有一个段落,它的名字是paragraph_one,用户可以添加第2到第3段落...并保存在数据库中  我想知道怎么做

2 个答案:

答案 0 :(得分:1)

好的,我想我明白你的意思。

您的用户可以将X段落添加到表单。然后,您想保存这些段落,但是您不知道每个用户创建了多少个段落。可以是1,也可以是100。

因此,有多种构建这种体系结构的方法。在没有踩到任何人的脚趾的情况下,我需要指出,这就是我会这样做的方式。但是同样,有很多设计方法。

  1. 选项(IMO最佳选择):

2张桌子: 1.是你的文章。 2.在您的段落中,您可以在article_id列中链接回您的文章ID。然后,您可以根据文章ID查找所有段落。

  1. 选项:

将它们放入array()中,然后将其存储在您的商品表中,例如您将它们另存为array();,并将段落推入该array,,并将此数组保存在文章表的paragraphs_array列中。


在您的JS中,您想将其命名为paragraph_1,paragraph_2等,而不是paragraph_one,paragraph_two。每当有人创建新段落时,您都用该parapgrah的编号更新<input type="hidden" name="count_para" value="">,例如5。

然后在您的控制器中执行for(x=0, x<$request->count-para, x++){}

答案 1 :(得分:0)

您需要创建另一个表。假设

article_paragraphs

使用以下字段(仅作为示例,您可以根据需要进行修改): id, text, article_id (fk)

我希望你明白。 :)