Php Laravel中表关系的概念

Php Laravel中表关系的概念,php,function,laravel,relationship,Php,Function,Laravel,Relationship,我有两张桌子: 卡片 注释 每张卡片有多张便笺。所以它们之间有这样一种关系: class Card extends Model { public function notes () { return $this->hasMany(Note::class); } } 好吧,很好 现在我需要理解这两条线的概念: $card()->$notes()->first(); 及 他们之间有什么区别?正如您在第一个$note()中看到的,在

我有两张桌子:

  • 卡片
  • 注释
每张卡片有多张便笺。所以它们之间有这样一种关系:

class Card extends Model {

    public function notes ()
    {
        return $this->hasMany(Note::class);
    }
}
好吧,很好


现在我需要理解这两条线的概念:

$card()->$notes()->first();

他们之间有什么区别?正如您在第一个
$note()
中看到的,在第二个
中,$note
不是函数。如何将它们翻译成PHP


第一个指向
卡片
表格,第二个指向
注释
表格,对吗?还是怎样无论如何,我一直坚持理解tham的概念。

在你的代码中的
$notes
之前,我不知道
$
,但是如果你想说这样的话

1- $card->notes()->first();
2- $card->notes->first();
在第1行的代码中,首先您有一个
$card
模型,然后您希望访问与该
$card
相关的所有
notes()
,并且由于在
notes
之后添加了
()
,您只需在notes上调用
查询生成器
,显示您可以在这之后执行任何其他数据库查询功能,类似于
where、orderBy、groupBy、
和任何其他复杂的数据库查询

但在第二个示例中,您实际上可以访问与该
$card
相关的
笔记集合,我们可以说您从数据库中获取所有相关笔记,并将其设置为laravel集合,并且您无法再对
笔记
执行数据库查询

注意:由于laravel集合有一些方法,如
where()、groupBy()、where()、sort()、…
,您可以在第二个集合上使用它们,但在这种情况下,您可以在集合而不是数据库上执行这些方法,
您已经从数据库中获得了所有结果

$notes()
是方法,而
$notes
是对象的属性。
1- $card->notes()->first();
2- $card->notes->first();