浅谈laravel5.5 belongsToMany自身的正确用法

1. Laravel belongsToMany自身的介绍

在Laravel中,我们经常会遇到需要建立多对多关系的情况。belongsToMany是Laravel提供的一种定义多对多关系的方法,它通常用于定义模型之间的关联关系。而当我们需要建立一个模型与自身之间的多对多关系时,就需要使用belongsToMany自身。

2. 使用belongsToMany自身的步骤

2.1 创建数据库表

在使用belongsToMany自身之前,我们首先需要在数据库中创建相关的表。假设我们要建立一个用户与用户之间的多对多关系,我们可以创建一个名为"user_user"的中间表。这个表需要包含两个外键列,分别指向用户表中的id列。

Schema::create('user_user', function (Blueprint $table) {

$table->id();

$table->unsignedBigInteger('user_id');

$table->unsignedBigInteger('related_user_id');

$table->timestamps();

});

在创建完数据库表之后,我们可以开始定义模型的关联关系。

2.2 定义模型关联关系

我们先创建一个名为User的模型,用于表示用户表。

use Illuminate\Database\Eloquent\Model;

class User extends Model

{

public function friends()

{

return $this->belongsToMany(User::class, 'user_user', 'user_id', 'related_user_id');

}

}

在User模型中,我们定义了一个friends方法,该方法调用了belongsToMany方法。belongsToMany方法接受四个参数:

相关模型的类名,这里是User::class

中间表的名称,这里是"user_user"

当前模型在中间表中的外键名称,这里是"user_id"

相关模型在中间表中的外键名称,这里是"related_user_id"

有了定义好的关联关系,我们就可以开始在代码中使用它了。

3. 如何使用belongsToMany自身

3.1 查询用户的好友

要查询用户的好友,我们可以简单地调用friends方法。

$user = User::find(1);

$friends = $user->friends;

这样,$friends变量就包含了用户的所有好友。

3.2 添加用户的好友

要添加用户的好友,我们可以使用attach方法。

$user = User::find(1);

$friend = User::find(2);

$user->friends()->attach($friend->id);

这样,用户1就添加了用户2作为好友。

3.3 删除用户的好友

要删除用户的好友,我们可以使用detach方法。

$user = User::find(1);

$friend = User::find(2);

$user->friends()->detach($friend->id);

这样,用户1就删除了用户2作为好友。

4. 总结

通过使用Laravel的belongsToMany自身方法,我们可以轻松地定义模型与自身之间的多对多关系。通过一系列简单的操作,我们可以查询、添加和删除模型的相关模型,从而实现更加灵活的数据关联。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签