Php Laravel 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(){

正如官方文件所说:

有时,您可能不仅希望保存一个模型,还希望保存所有模型 它的关系。为此,您可以使用推送方法:保存 模型和关系$user->push()

术语表:

  • 术语识别码
  • 名字
  • 鼻涕虫
术语分类表:

  • 术语\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();