zoukankan      html  css  js  c++  java
  • 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');
      
          }
  • 相关阅读:
    ffmpeg 简单使用总结
    使用 Solr 构建企业级搜索服务器
    Linux 常用命令整理
    基于.net standard 的动态编译实现
    基于.net core 微服务的另类实现
    Java中线程总结
    关于EF中直接执行sql语句的参数化问题
    一个关于单据审核的流程演变
    java中匿名内部类总结
    Eclipse 中打开选中文件/文件夹所在目录
  • 原文地址:https://www.cnblogs.com/fenle/p/4808898.html
Copyright © 2011-2022 走看看