Laravel相当新,现在就开始学习工作,只是想知道,为什么你只需要使用时就必须使用关系?
$n = Name::find(2)
$a = Address::where('name_id', '=', $n['id'])->get()
而不是在控制器中形成关系,并且:
$n = Name::find(2)
$n->address
它是以某种方式变得不那么复杂,还是只是为了减少代码或什么?。
任何帮助表示感谢并提前感谢。
答案 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
中获取更多信息