我正在努力使用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();
出了什么问题?
答案 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();
显然这是更多的工作,这绝对不是我建议的方式。