Php Laravel push()不工作,相关模型未保存
正如官方文件所说: 有时,您可能不仅希望保存一个模型,还希望保存所有模型 它的关系。为此,您可以使用推送方法:保存 模型和关系$user->push() 术语表:Php Laravel push()不工作,相关模型未保存,php,class,laravel,laravel-4,Php,Class,Laravel,Laravel 4,正如官方文件所说: 有时,您可能不仅希望保存一个模型,还希望保存所有模型 它的关系。为此,您可以使用推送方法:保存 模型和关系$user->push() 术语表: 术语识别码 名字 鼻涕虫 术语分类表: 术语\u分类\u id 术语识别码 描述 我的学期模型: public function TermTaxonomy(){ return $this->hasOne('TermTaxonomy'); } 我的术语分类模型: public function Term(){
- 术语识别码
- 名字
- 鼻涕虫
- 术语\u分类\u id
- 术语识别码
- 描述
public function TermTaxonomy(){
return $this->hasOne('TermTaxonomy');
}
我的术语分类模型:
public function Term(){
return $this->belongsTo('Term');
}
我的分类控制器
public function store(){
$data = Input::all();
$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$category->TermTaxonomy()->taxonomy = 'category';
$category->TermTaxonomy()->description = $data['TermTaxonomy']['description'];
$category->push();
}
使用上面的代码,我可以保存名称和slug,但不会插入分类法和描述。如何使用push()而不是save()来执行此操作?可能吗
谢谢,我是Laravel的新手。据我所知,
push()
的目的是更新相关模型,而不是插入它们。因为该方法只是在所有加载的相关模型上循环并保存它们:
public function push()
{
if ( ! $this->save()) return false;
foreach ($this->relations as $models)
{
foreach (Collection::make($models) as $model)
{
if ( ! $model->push()) return false;
}
}
return true;
}
因此,一个用例是:
$category = Term::find(1);
$category->name = 'foo';
$category->TermTaxonomy->description = 'bar';
$category->push(); // save would only update the name but not the description
我建议您使用Laravel的方法: 或者,如果您的
术语分类法
模型配置为批量分配,您可以使用create()
如果您确实想使用
push()
。这也会起作用:
$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$taxonomy = new TermTaxonomy();
$taxonomy->taxonomy = 'category';
$taxonomy->description = $data['TermTaxonomy']['description'];
$category->setRelation('TermTaxonomy', $taxonomy);
$category->push();
$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$category->TermTaxonomy()->create([
'taxonomy' => 'category',
'description' => $data['TermTaxonomy']['description']
]);
$category->save();
$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$taxonomy = new TermTaxonomy();
$taxonomy->taxonomy = 'category';
$taxonomy->description = $data['TermTaxonomy']['description'];
$category->setRelation('TermTaxonomy', $taxonomy);
$category->push();