asAttach in Form Tags Laravel(多对多关系)
基本上我创建了一个模型asAttach in Form Tags Laravel(多对多关系),laravel,many-to-many,Laravel,Many To Many,基本上我创建了一个模型标签和项目 项目模型: protected $fillable = [ 'title', ]; public function tags() { return $this->belongsToMany(Tags::class); } 标签型号: use HasFactory; protected $fillable = [ 'coding', 'name', ]; public function projects() {
标签
和项目
项目模型:
protected $fillable = [
'title',
];
public function tags()
{
return $this->belongsToMany(Tags::class);
}
标签型号:
use HasFactory;
protected $fillable = [
'coding',
'name',
];
public function projects()
{
return $this->belongsToMany(Project::class);
}
我还做了一次迁移:
Schema::create('tag_project', function (Blueprint $table) {
$table->foreignId('tag_id')->constrained();
$table->foreignId('project_id')->constrained();
});
现在,当我想创建一个新的项目
时,我想添加标签,我该如何存档
项目控制员:
$this->validate($request, [
'title' => 'required|max:200',
]);
Project::create([
'title' => $request->title,
]);
return redirect()->route('dashboard');
请帮忙
形式
像这样吗?
$project=project::创建(…)
,然后$project->tags()->附加(…)
:。另外,作为旁注,模型名称是单数的<代码>标签应该是标签
:)@Timleiss,我如何在我的项目上存档它显示了我可以从中选择的标签?你必须找到一种方法,在创建项目时发送你想要关联到项目的标签,然后执行$project->Tags()->attach($tagid)
。您当前只显示控制器代码,而不是表单/AJAX,因此我只能推测您当前的方法@Timlei updatet it,如何将其与关系绑定好,select name=“tags”
应该是select name=“tags[]”
,每个
都应该有一个标记的ID,然后您就可以做$project->tags()->附加($request->input('tags'))代码>。如果您试图在项目的同时创建标记,那么它会变得更复杂。
<form action="{{ route('project.create') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group mb-3">
<label for="title" class="admin_label">Title</label>
<input type="text" class="admin_input" name="title" id="title" placeholder="Admin...">
@error('title')
{{$message}}
@enderror
</div>
<select name="tags" id="tags">
<option value="one">Hello</option>
</select>
<button type="submit" class="btn submit btn--action">Create Project</button>
</form>
$poject = Project::create([
$project->tags->attach($tagsID),
'title' => $request->title,
]);