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

时间:2015-07-25 03:00:48

标签: php laravel-5 eloquent

我尝试做的事情似乎应该很简单,但我无法弄明白。我真正想要的只是将一个模型添加到属于另一个模型的数据库的简单方法。我知道这是令人困惑的措辞,所以我将说明。

我有一个用户模型和一个地址模型。我有一个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. 这叫什么?它有名字吗?
  4. 谢谢!

2 个答案:

答案 0 :(得分:1)

$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

因为用户还没有地址模型,该方法将返回NULL,因此 - > create将失败。

答案 1 :(得分:1)

是的,你可以Insert Related Models

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

请注意您如何执行此操作depends on the type of relationship