我已在模型中设置变量$filleble
。我想测试更新
功能,但出现以下错误:
SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“\u方法”(SQL:updatepositions
setname
=临时水生领袖,方法
=放置,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());
从Laravel 5.2更新到5.4后,我经历了这种中断-我在留档/迁移指南中找不到任何包含它的内容。
正如本github问题中所述,Eloquent的正确修复/使用似乎是:
Positions::find($id)->fill(Input::all())->save();
要触发laravel的fillable
检查,然后进行更改。
编写一个父类
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;
}
更改如下:
->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快速编写。