我想将文章输入动态保存在数据库中这是我现在的代码,并且我想以动态方式保存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段落...并保存在数据库中 我想知道怎么做
答案 0 :(得分:1)
好的,我想我明白你的意思。
您的用户可以将X段落添加到表单。然后,您想保存这些段落,但是您不知道每个用户创建了多少个段落。可以是1,也可以是100。
因此,有多种构建这种体系结构的方法。在没有踩到任何人的脚趾的情况下,我需要指出,这就是我会这样做的方式。但是同样,有很多设计方法。
2张桌子:
1.是你的文章。
2.在您的段落中,您可以在article_id
列中链接回您的文章ID。然后,您可以根据文章ID查找所有段落。
将它们放入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)
等
我希望你明白。 :)