• laravel使用 面向对象的方式绑定多对多的关系


    创建model文件,并且一起创建migration文件:

    php   artisan  make:model Habit  -m

    创建多对多的中间表的方法:

    php artisan make:migration create_habit_user_table --create=habit_user

    设计habit_user:

    $table->unsignedInteger('user_id');

    $table->unsignedInteger('habit_id');

    模型中定义多对多:

    user模型:

    public function habits(){

      return $table->belongsToMany(Habit::class);

    }

    /*

    belongsToMany参数说明:

    第一个参数是 第二个Model 
    第二个参数是 关系表名 
    第三个参数是 第一个Model在关系表中的外键ID 
    第四个参数是 第二个Model在关系表中的外键ID

    */

    Habit模型:

    public function users(){

      return $this->belongsToMany(User::class);

    }

    实现多对多关系:

    第一种方法:attach(不会删除之前的数据,只会把新添加的数据加上去)

    //通过面向对象的方式绑定文章和标签:
    $label1=AppLabel::create(['name'=>'Python']);
    $label2=AppLabel::create(['name'=>'Java']);
    $article=AppArticle::first();
    $article->labels()->attach([
    $label1->id,
    $label2->id
    ]);
    dd($article->labels);

    第二种方法:sync(使用sync会和数据库同步,只会保留我们填写的id项,其他的项都会删除掉)
    $label1=AppLabel::create(['name'=>'Python']);
    $label2=AppLabel::create(['name'=>'Java']);
    $article=AppArticle::first();
    $article->labels()->sync([
    $label1->id,
    $label2->id
    ]);
    dd($article->labels);

    解绑的方法使用detach,只需要传入需要解绑的数据id就可以了
  • 相关阅读:
    关于博客园各项工具的使用
    Java常用的7大排序算法汇总
    Java 基本数据类型(新手必看资料)
    学习Java,还需要学好哪些知识
    JavaSE基础知识总结
    python2.7.11安装pygame包
    phpstorm打开项目目录时,出现一直在扫描文件
    laravel 通过npm搭建前端资源的注意事项
    基于laravel5.2进行rabbitmq队列服务发送接收信息
    在centos7中安装composer
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/10459056.html
Copyright © 2020-2023  润新知