如何在Laravel 5中添加一个属于另一个对象的对象


How to add an object that belongs to another object in Laravel 5

我想做的似乎应该是简单的,但我不能弄清楚。我真正想要的是一种简单的方法,将一个模型添加到属于另一个模型的数据库中。我知道这是令人困惑的措辞,所以我将说明。

我有一个用户模型和一个地址模型。我定义了一个id为1的用户,我想给这个用户添加一个地址。我可以像这样添加地址:

$a = new App'Address;
$a->user_id = 1;
$a->line_1 = '1234 Something Rd.';
$a->city = 'Fort Worth';
$a->state = 'TX';
...

但是如果我能直接说:

就简单多了
$u = App'User::first();
$u->address->create([array of options]); /* Or something */

我的问题是:

  1. 这可能吗?
  2. 我该怎么做?
  3. 这叫什么?它有名字吗?

谢谢!

$u = App'User::first();
App'Address::create(['user_id'=>$u->id, etc]);

$address = App'Address::create([options]);
$u->address()->save($address); 

不要忘记这样设置Model Address.php:

protected $fillable = ['user_id','etc'];

不能调用

$u->address->create

因为User还没有地址模型,方法将返回NULL,所以->create将失败

可以,您可以插入相关模型:

$user = App'User::first();
$address = App'Address::create($attributes);
$user->address()->associate($address);