发布
社区首页 >问答首页 >在Laravel中的Fill方法不工作吗?

在Laravel中的Fill方法不工作吗?
EN

Stack Overflow用户
提问于 2014-06-19 17:17:43
回答 3查看 69.8K关注 0票数 18

我正在学习如何使用Laravel框架,但我在填充模型时遇到了麻烦。下面是我的代码:

模型Event

代码语言:javascript
代码运行次数:0
复制
<?php
class Event extends Eloquent {
  //Some functions not used yet
}

下面是控制器中的代码:

代码语言:javascript
代码运行次数:0
复制
$event = new Event();
$event->fill(array('foo', 'bar'));
print_r($event->attributes);

那么,为什么print_r会显示一个空数组呢?

EN

回答 3

Stack Overflow用户

发布于 2015-08-26 17:00:38

还要确保在您的模型类中定义了$fillable属性。例如,在新的重命名模型中:

代码语言:javascript
代码运行次数:0
复制
/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = ['field1', 'field2'];

如果您的模型中没有定义$fillable$guardedfill()将不会设置任何值。这是为了防止对模型进行批量分配。请参阅Laravel Eloquent docs:http://laravel.com/docs/5.1/eloquent上的“批量分配”。

填充属性时,请确保使用关联数组:

代码语言:javascript
代码运行次数:0
复制
$event->fill(array('field1' => 'val1', 'field2' => 'val2'));

一种调试和检查所有值的有用方法:

代码语言:javascript
代码运行次数:0
复制
//This will var_dump the variable's data and exit the function so no other code is executed
dd($event);

希望这能有所帮助!

票数 15
EN

Stack Overflow用户

发布于 2014-06-19 17:44:08

在fill中使用键/值数组:

举个例子:

代码语言:javascript
代码运行次数:0
复制
$book->fill(array(
    'title'  => 'A title',
    'author' => 'An author'
));
票数 2
EN

Stack Overflow用户

发布于 2018-06-09 03:32:35

在你的模型中,你需要有protected $fillable = ['foo','bar']

然后您可以执行以下操作:

代码语言:javascript
代码运行次数:0
复制
$event = new Event(array('foo' => "foo", "bar" => "bar"));
$event->save(); // Save to database and return back the event
dd($event);

数组密钥需要在$fillable上,因为Laravel将有效地调用:

代码语言:javascript
代码运行次数:0
复制
foreach ($array as $key => $value){
  $event->$key = $value;
}

或者,您可以直接写入列名:

代码语言:javascript
代码运行次数:0
复制
$event = new Event();
$event->foo = "foo";
$event->bar = "bar";
$event->save();
dd($event);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24303003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档