如何使用Laravel Eloquent push()函数?

时间:2014-07-23 14:51:17

标签: php laravel-4 eloquent

我正在努力使用laravel push()函数

我的代码在这里:

$company = new Company(array('name' => 'Company 1'));
$company->persons[] = new Person(array('name' => 'Company 1 Person 1', 'mobile' => 12345));
$company->persons[] = new Person(array('name' => 'Company 1 Person 2', 'mobile' => 112233));
$company->push();

存储时: 公司存储得很好,但对于公司人员,它会将company_id存储到0

Larave Documentations说:

  

有时您可能希望不仅保存模型,还保存所有模型   关系。为此,您可以使用推送方法:

$user->push();

出了什么问题?

1 个答案:

答案 0 :(得分:4)

这不是主义;)

push可以做到这一点,但它不会那么简单(下面你可以知道如何)

这就是你可以做的事情(好的和简单的方式):

// still you need already existing Company, so save it first
$company = new Company(array('name' => 'Company 1'));
$company->save();

$company->persons()->createMany(array(
  array('name' => 'Company 1 Person 1', 'mobile' => 12345),
  array('name' => 'Company 1 Person 2', 'mobile' => 12345)
));

这将保存新的Person模型并将其与Company

相关联

push可以完成这项工作,但只有当您使用现有的父项并且您首先关联子模型时才会这样做:

$company = Company::first(); // or any existing

$person = new Person(array('name' => 'Company 1 Person 1', 'mobile' => 12345));
$person->company()->associate($company);

$anotherPerson = new Person(array('name' => 'Company 1 Person 2', 'mobile' => 12345));
$anotherPerson->company()->associate($company);

$company->persons[] = $person;
$company->persons[] = $anotherPerson
$company->push();

显然这是更多的工作,这绝对不是我建议的方式。