表关系的概念在Laravel

时间:2016-10-18 06:11:32

标签: php function laravel relationship

我有两张桌子:

  • Cards
  • Notes

每张都有多个注释。所以他们之间有这样的关系:

class Card extends Model {

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

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

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

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

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

第一个指向int block_id_0 = jObj.optInt("block_id"); 表,第二个指向ternary表,对吧?或者是什么?无论如何,我一直坚持理解tham的概念。

1 个答案:

答案 0 :(得分:3)

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

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

在第1行的代码中,首先您拥有$card模型,然后您想要访问与该notes()相关的所有$card,并且因为添加了()notes之后,您只需在注释上调用query builder,表明您可以在此之后执行任何其他数据库查询功能,例如where, orderBy, groupBy, ...和数据库上的任何其他复杂查询。

但是在第二个实际上您可以访问与collection相关的$card个注释,我们可以说您从数据库获取所有相关注释并设置它进入了laravel集合,你不再能够在notes上执行数据库查询。

  

注意:因为laravel集合有一些像where(), groupBy(), whereIn(), sort(), ...这样的方法你可以在第二个上使用它们,但是在这种情况下你在集合而不是数据库上执行这些方法,{{1 }}