Php 拉维尔';s透视表+;一般透视表

Php 拉维尔';s透视表+;一般透视表,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,什么是laravel透视表和透视表?这是怎么回事 最近,我做了关于透视表的研究。我以为我了解他们,知道他们是什么,但我可能错了 我一直认为透视表只是两个表之间的表(多对多关系) 但后来我开始了这项研究,碰巧不是这样,而是像普通表的不同架构,行就是列。它变了 但拉威尔也有数据透视表。开始阅读文档并进行研究。也许我读错了,但它看起来就像是laravel中的透视表——两个表之间的表,多对多 在别处搜索,但找不到关于它的正确信息 好吧,就这样吧。拉威尔的支点只是多对多 然后我开始了这个项目,今天我说到了

什么是laravel透视表和透视表?这是怎么回事

最近,我做了关于透视表的研究。我以为我了解他们,知道他们是什么,但我可能错了

我一直认为透视表只是两个表之间的表(多对多关系)

但后来我开始了这项研究,碰巧不是这样,而是像普通表的不同架构,行就是列。它变了

但拉威尔也有数据透视表。开始阅读文档并进行研究。也许我读错了,但它看起来就像是laravel中的透视表——两个表之间的表,多对多

在别处搜索,但找不到关于它的正确信息

好吧,就这样吧。拉威尔的支点只是多对多

然后我开始了这个项目,今天我说到了一点,把这个放在中间的表中作为pivot使我产生了一个问题,我有一个问题。。。分钟和小时。。。无法修复

模型是
教室(U学生扩展轴

有什么办法?只需将其更改为
教室\u学生扩展模型

我想我不再理解数据透视表了,它们是不同类型的数据透视吗?拉威尔的支点不同

所以我的问题是,什么是透视表拉威尔的透视表。它们不同吗?这是怎么回事


请帮助我理解这一点。

学习时,只关注Laravel(或Elount)中的透视表概念。当我学习时,我并不关心pivot表的一般含义。我只关注文档中的事实()

多对多关系需要一个额外的表。我们还可以向该表插入其他有用的数据。并可作为系统中的一个模型

例如: 用户与角色多对多关系=用户与角色

由于数据透视表,您可以将中间表数据作为模型检索(与系统中的其他模型一样)

例如:

//get user by id
$user = App\User::find(1);

//get roles of this user
foreach ($user->roles as $role) {

  //pivot attribute returns a model which represent user_role table
  echo $role->pivot->created_at;

}
注意:可以通过扩展pivot来创建类。但你必须实现正确的关系才能让它发挥作用。您的代码看起来应该与下面的代码类似

class Student extends Model
{
    /**
     * The users that belong to the role.
     */
    public function Rooms()
    {
        return $this->belongsToMany('App\Room')->using('App\Room_Student');
    }
}

class Room extends Model
{
    /**
     * The users that belong to the role.
     */
    public function Students()
    {
        return $this->belongsToMany('App\Student')->using('App\Room_Student');
    }
}

class Room_Student extends Pivot
{
    //
}

我希望这能有所帮助。

简单地说就是一个数据透视表一个将两个表连接在一起的表

假设你有一张桌子

USERS:
user_id, user_name
假设你有一个桌子游戏

GAMES
game_id, game_name
一个用户可以玩很多游戏。游戏有很多用户在玩

要链接它们,请创建第三个表

GAMES_TO_USERS
game_id, user_id
使用此表,您可以请求用户玩哪些游戏,以及哪些用户玩哪个游戏


此表
GAMES\u TO\u USERS
在本例中是透视表。

如果您了解多对多关系,这是常见的,为了处理多对多关系,我们使用中间(透视)表存储两个表的关系。 考虑下面列出的“教育”和“人”表:

表:人

|------|-------|-----|
|  id  | name  | age |
|------|-------|-----|
|  1   | Bob   | 30  |
|  2   | John  | 34  |
|  3   | Marta | 28  |
|------|-------|-----|
表:教育

|------|-------|
|  id  | level |
|------|-------|
|  1   | BSc   |
|  2   | MSc   |
|  3   | PhD   |
|------|-------|

认为鲍伯有BSC,MSC,约翰有BSC,MSC,PHD,马尔塔有BSC,现在考虑的是多对多关系,要排序这种关系,你需要有中间表,比如

表:个人教育

|------|-------|
|  id  | level |
|------|-------|
|  1   | BSc   |
|  2   | MSc   |
|  3   | PhD   |
|------|-------|
|------------|--------------|
|  person_id | education_id |
|------------|--------------|
|  1         |    1         |
|  1         |    2         |
|  2         |    1         |
|  2         |    1         |
|  2         |    3         |
|  3         |    1         |
|------------|--------------|
此表主要存储每个关系的主键(ID)。这是透视表背后的基本思想,当您使用幼虫时,有一些最佳实践,例如

  • 数据透视表的名称应由两个数据透视表的单数名称组成 表,由不得分符号分隔,这些名称应为 按字母顺序排列
拉拉维尔交易所:

Class Person extends Model {
    public function education ()
    {   
      return $this->belongsToMany('App\Education', 'person_education');
    }
}
此外,如果数据透视表的实际字段名不同于默认的person\u id和education\u id,则可以指定它们。然后只需再添加两个参数,首先是当前模型字段,然后是要联接的模型的字段

public function education() { 
  return $this->belongsToMany('App\Products', 'products_shops', 'shops_id', 'products_id'); 
}
记住这一点

透视表-用于连接两个表之间关系的表


Laravel部分-Laravel提供了可以使用透视表的关系,在许多情况下非常有用

示例:
数据库:
用户
发布用户
发布

User.php(模型)

现在,要访问所有登录用户的帖子:(查看)

输出:

  • 职位名称1
  • 邮名2
  • 邮名3
  • 姓氏4

我找到了有关数据透视表和laravel的详细说明。能去看看是值得的。Pivot表只是一个附加表,它可能通过在两个数据模型之间建立多对多关系而出现。这只是所有这些人发现的一种方法,他们使用数据库彼此连接数据,并关注所有这些最佳实践规则。这可能是目前最好的方法。我们将看看这在未来是否会改变。使用这种方法只需要索引,如果您研究了数据库,这是一种查找数据的非常快速的方法。关联表通俗地说有许多名称,包括关联表、桥接表、交叉引用表、人行横道、中间表、交叉表、连接表、连接表、链接表、链接表、多对多解析程序、映射表、映射表、配对表、透视表(在Laravel中使用-不要混淆),或转换表。“-认为透视表应命名为role_user,因为它们必须按字母顺序排列…如果您的表有多个多对多关系,该怎么办?Eloquent是否只选择它找到的第一个关系?
@foreach(auth()->user()->posts as $post)
  <li>{{ $post->name }}</li>
@endforeach
|------------|--------------|
|  post_id   |   user_id    |
|------------|--------------|
|  1         |    1         |
|  2         |    1         |
|  3         |    1         |
|  4         |    1         |
|------------|--------------|