laravel 多对多 belonsToMany

  1. 建库,建model
    php artisan make:migration create_tags_table --create=tags
    php artisan make:model Tag
  2. 加字段
    <?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');
        }
    }
  3. 添加关系
    //在Article模型中
        public function tags()
        {
            return $this->belongsToMany('AppTag');
        }
    //在Tag中
        public function articles()
        {
            return $this->belongsToMany('AppArticle');
        }
  4. 调用
    $article->tags()->attach($id)
    $tag->articles()->attach($id)
  5. 视图多选框
        <div class='form-group'>    
            {!! Form::label('tags', 'Tags') !!}
            {!! Form::select('tags[]',$tags, null, ['class'=>'form-control','multiple']) !!}
        </div>    
  6. 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');
    
        }
原文地址:https://www.cnblogs.com/fenle/p/4808898.html