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

Laravel雄辩-$填充不工作?

麻昌翰
2023-03-14

我已在模型中设置变量$filleble。我想测试更新功能,但出现以下错误:

SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“\u方法”(SQL:updatepositionssetname=临时水生领袖,方法=放置,id=2,描述=这是我的描述,更新时间=2014-05-29 17:05:11其中positions客户id=1和id=2)

当我的fillable没有这个参数时,为什么要对\u方法大喊大叫?我的更新功能是:

Client::find($client_id)
        ->positions()
        ->whereId($id)
        ->update(Input::all());

共有3个答案

景温书
2023-03-14

从Laravel 5.2更新到5.4后,我经历了这种中断-我在留档/迁移指南中找不到任何包含它的内容。

正如本github问题中所述,Eloquent的正确修复/使用似乎是:

Positions::find($id)->fill(Input::all())->save();

要触发laravel的fillable检查,然后进行更改。

楚彦
2023-03-14

编写一个父类

class BaseModel extends Model

public static function getFillableAttribute(Model $model, $data){
    $array = $model->getFillable();
    $arr = [];
    foreach ($array as $item){
        if( isset($data["$item"])){
            $arr["$item"] = $data["$item"];
        }
    }
    return $arr;
}
田嘉慕
2023-03-14

更改如下:

->update(Input::all());

为此(从数组中排除\u方法

->update(Input::except('_method'));

实际上下面的更新方法是从照明\数据库\雄辩\生成器类调用的,该类由照明\数据库\雄辩\关系类的_call方法触发(因为您正在调用更新在一个关系上),因此$fillable检查没有执行,您可以使用输入::exceps('_method'),因为我回答:

public function update(array $values)
{
    return $this->query->update($this->addUpdatedAtColumn($values));
}

如果直接对模型(而不是关系)调用此函数:

Positions::find($id)->update(Input::all());

然后,这将不会发生,因为fillable检查将在Model.php中执行,因为下面的更新方法将从照明\数据库\雄辩\模型类中调用:

public function update(array $attributes = array())
{
    if ( ! $this->exists)
    {
        return $this->newQuery()->update($attributes);
    }

    return $this->fill($attributes)->save();
}
 类似资料:
  • 嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!

  • 请查看下面的代码。 我在“CompletedService”中有多条记录,并且在account表中有一个父id account\u id。我和你约会是为了钱。 ASC和DESC已经尝试过了。 尝试按whereHas排序,但不会影响任何记录。下面是模型关系。 我不需要在模型中使用orderby,因为我多次使用了这个关系,并且在这个查询中只需要orderby。 与一个已完成的服务记录关系只有一个账户。

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是新来的拉威尔,我曾在codeigniter工作。我对雄辩的ORM概念着迷。我有一个关于雄辩能力的一般性问题。ORM的功能是什么,我的意思是我们可以获得相关表行的级别。如果你看“http://four.laravel.com/docs/eloquent#relationships 一对一 一对多 多对多 多态关系 在我看来,“一对一”意味着一级。表1表2

  • 在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?

  • 始终使用Laravel Elotent而不是原始SQL有什么好处吗? 我有一个习惯,首先在phpMyAdmin中编写SQL来检查关系,然后将其翻译成雄辩的ORM。 有时,翻译成雄辩的ORM是痛苦和耗时的,尤其是从长而复杂的SQL查询进行翻译。与使用雄辩的ORM相比,我能够用SQL快速编写。