网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Laravel的Many-To-Many如何使用

这篇文章主要介绍“Laravel的Many-To-Many如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel的Many-To-Many如何使用”文章能帮助大家解决问题。

创新互联 - 成都服务器托管,四川服务器租用,成都服务器租用,四川网通托管,绵阳服务器托管,德阳服务器托管,遂宁服务器托管,绵阳服务器托管,四川云主机,成都云主机,西南云主机,成都服务器托管,西南服务器托管,四川/成都大带宽,大带宽服务器,四川老牌IDC服务商

在实际的开发中,我们经常会接触到几种常见的对应关系模式:

One-To-One //一对一

One-To-Many //一对多

Many-To-Many //多对多

在刚刚开始接触到这些概念的时候,其实我是不太理解的。但是一旦你将这些概念应用到生活中,理解起来就很简单了,就举一个与我们在网上经常见到的例子:

User-To-Profile // One-To-One

User-To-Articles // One-To-Many

Articles-To-Tags // Many-To-Many

翻译过来就是:

  1. 一个用户对应一个用户档案

  2. 一个用户可以发表多篇文章

  3. 而文章和标签确实多对多的关系,一篇文章可以有多个标签;一个标签可以属于多篇文章

在这些关系模型中,最难实现的就是Many-To-Many这种多对多的关系,不过借助Laravel的强大的Eloquent,实现这个功能还是比较顺心的。

1. 创建数据库表

创建articles

Schema::create('articles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });

创建tags

Schema::create('tags', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });

当然,解决这个经典问题单单靠这两张表还不足够,需要在这两张表之外再建立一个关系表,用来将articletag联系起来,在Laravel中,如果你遵循官方的标准规则,第三张表应该是这样的:

表名 article_tag

Schema::create('article_tag', function(Blueprint $table) {
            $table->integer('article_id')->unsigned()->index();
            $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
            $table->integer('tag_id')->unsigned()->index();
            $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade');
        });

如果你没有按照官方的规范来,你需要在模型中指定外键。

2. 创建模型并指定关系

Article.php中:


   public function tags()    {        return $this->belongsToMany('App\Tag');    }

Tag.php中:

public function articles()
    {
        return $this->belongsToMany('App\Article');
    }

这里注意两点:

  1. 你可以在声明关系的时候指定外键,如$this->belongsToMany('App\Article','foreign_key', 'other_key');

  2. 如果在article_tag表中你添加了timestamps(),即表中出现created_at和updated_at这两个字段,在Article中声明关系的时候需要这样:return $this->belongsToMany('App\Tag')->withTimestamps();

3. 在Controller中使用

如果我们想查看某个文章含有哪些标签,我们可以这样:

$article = Article::find($id);

dd($article->tags);

如果我们想通过某个标签来查找文章:


public function showArticleByTagName($name)    {        $tag = Tag::where('value','=',$name)->first();        dd($tag->articles);    }

关于“Laravel的Many-To-Many如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


当前名称:Laravel的Many-To-Many如何使用
文章URL:http://bjjierui.cn/article/gjpjhi.html

其他资讯