- 建库,建model
php artisan make:migration create_tags_table --create=tags
php artisan make:model Tag - 加字段
<?php use IlluminateDatabaseSchemaBlueprint; use IlluminateDatabaseMigrationsMigration; class CreateTagsTable extends Migration { public function up() { Schema::create('tags', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->timestamps(); }); //字母顺序,单数形式表名下划线结合定义中间表名 Schema::create('article_tag', function (Blueprint $table) { $table->integer('tag_id')->unsigned()->index(); $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade'); $table->integer('article_id')->unsigned()->index(); $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade'); $table->timestamps(); }); } public function down() { Schema::drop('tags'); Schema::drop('article_tag'); } }
- 添加关系
//在Article模型中 public function tags() { return $this->belongsToMany('AppTag'); } //在Tag中 public function articles() { return $this->belongsToMany('AppArticle'); }
- 调用
$article->tags()->attach($id) $tag->articles()->attach($id)
- 视图多选框
<div class='form-group'> {!! Form::label('tags', 'Tags') !!} {!! Form::select('tags[]',$tags, null, ['class'=>'form-control','multiple']) !!} </div>
- create , store
public function create() { $tags = AppTag::lists('name','id'); return view('articles.create', compact('tags')); } public function store(ArticleRequest $request) { $article = Auth::user()->articles()->create($request->all()); $article->tags()->attach($request->tags); flash()->success('Your article has been created!'); return redirect('articles'); }