当前位置: 首页 > 知识库问答 >
问题:

Laravel push()不工作,相关模型未保存

慕容文昌
2023-03-14

正如官方文件所说:

有时,您可能不仅希望保存模型,还希望保存其所有关系。为此,您可以使用push方法:保存模型和关系$user-

术语表:

  • term_id
  • 姓名
  • 鼻涕虫

Term_taxonomy表:

  • term_taxonomy_id
  • term_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();  
}

用我上面的代码,我可以保存名称和段塞,但分类和描述没有插入。有可能吗?

谢谢,我是新来的。

共有1个答案

潘高洁
2023-03-14

据我所知,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插入相关模型的方法:

$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$taxonomy = new TermTaxonomy();
$taxonomy->taxonomy = 'category';
$taxonomy->description  = $data['TermTaxonomy']['description'];
$category->TermTaxonomy()->save($taxonomy);
$category->save();

或者,如果您的术语分类法模型配置为批量分配,您可以使用create()

$category = new Term;
$category->name = $data['name'];
$category->slug = $data['slug'];
$category->TermTaxonomy()->create([
    'taxonomy' => 'category',
    'description' => $data['TermTaxonomy']['description']
]);
$category->save();

如果您确实想使用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();
 类似资料:
  • 我想知道为什么我的铁轨没有拯救我的encrypted_password场。 这是我的UserController 这是我的用户模型 此外,我使用此函数保存它 有一件事我怀疑是我创造了我的第一次迁徙 然而,我将:password字段更改为:encrypted_password,它反映在表中。我已经坚持了两个小时了。我想知道是否有什么突出的地方。谢谢 日志显示,注入的数据减去加密密码 插入“用户”(“

  • Querying related models(查询相关模型) 简介 包含内容 范围 included relations 使用过滤参数 简介

  • 我正在使用。每当单元格选择值更改时,我都想收到通知。但是我的代码不起作用。我正在使用。当我更改表单元格的值时,什么也不会发生。 当我更改表格单元格的值时,什么都没有发生。

  • 对编码来说是新的,如果已经涵盖了,请道歉。花了几个晚上在Django的文档、YouTube、谷歌和这里尝试各种方法来解决这个问题。 我有一个与驾驶员相关的模型路线,我试图在我的模板上显示所有与该路线相关的驾驶员的路线。然而,目前我所能得到的只是来自路线模型的数据,而不是相关驾驶员的数据。 会感谢任何帮助,因为我正在努力让我的头! Models.py Views.py 样板 我尝试过.prefetc

  • 我不知道在modelAndView中发布后如何重定向 我该怎么做?

  • 我有一个数据库结构,其中我有一个用户和公司之间的多对多关系表。为此,我有一个交叉引用表company_user。此外,每个用户在公司中都有一定的角色,因此交叉引用表也有role_id。问题是,由于某种原因,当我试图从交叉引用表中检索角色时,我会出现异常。 以下是我如何定义公司模型中的关系: 现在,如果我只是尝试从pivot获取角色id,一切都会正常工作: 但是我还需要角色的数据,所以我在自定义透视