Laravel与表的关系

时间:2017-11-23 21:38:04

标签: laravel laravel-5 relational-database

Laravel相当新,现在就开始学习工作,只是想知道,为什么你只需要使用时就必须使用关系?

$n = Name::find(2)
$a = Address::where('name_id', '=', $n['id'])->get()

而不是在控制器中形成关系,并且:

$n = Name::find(2)
$n->address

它是以某种方式变得不那么复杂,还是只是为了减少代码或什么?。

任何帮助表示感谢并提前感谢。

2 个答案:

答案 0 :(得分:0)

编写更少的代码并封装内容(一次编写并随处使用)......这些是OOP中的主要原则......您的示例并不复杂。如果一个用户只有一个地址你甚至不需要一个单独的地址模型,只需将它作为一个属性放在用户表中......但想象一下客户和发票的关系...一个客户可以有多个发票和你想要显示某个发票的所有发票(包含所有详细信息)。它需要你编写大量代码来显示所有细节,而不需要在模型之间建立关系。

答案 1 :(得分:0)

如果用户有一个地址,则不需要新模型。只需在用户表中添加“地址”列即可;

这是您的迁移;

  

php artisan make:migration add_address_column_to_users_table

如果用户有多个地址,您可以使用一对多的关联。

创建地址模型和表格,

  

php artisan make:model Address -m

然后在地址模型中添加此功能;

public function users()
    {
        return $this->belongsTo('App\User');
    }

在您的用户模型中;

  public function address()
    {
        return $this->hasMany('App\Address');
    }

多数民众赞成。您可以在here

中获取更多信息