如何更新laravel中的列值

Ale*_*Kim 29 laravel eloquent laravel-4

我有一个页面模型.它在数据库表中有以下列:

  • ID
  • 标题
  • 图片
  • 身体

我想只更新"图像"列值.

这是我的代码:

public function delImage($path, $id) {
    $page = Page::find($id);
    $page->where('image', $path)->update(array('image' => 'asdasd'));
    \File::delete($path);
}
Run Code Online (Sandbox Code Playgroud)

它抛出了一个错误,我试图在非对象上使用where().如何才能正确更新"图像"列值?

The*_*pha 37

你可以试试这个:

Page::where('id', $id)->update(array('image' => 'asdasd'));
Run Code Online (Sandbox Code Playgroud)

还有其他方法,但Page::find($id);在这种情况下无需使用.但是如果你使用find()那么你可以尝试这样:

$page = Page::find($id);

// Make sure you've got the Page model
if($page) {
    $page->image = 'imagepath';
    $page->save();
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用:

$page = Page::findOrFail($id);
Run Code Online (Sandbox Code Playgroud)

因此,如果找不到具有该id的模型,它将抛出异常.


小智 16

我试图用

$table->update(['field' => 'val']);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我不得不修改我的表模型以授权编辑此字段:在数组“protected $fillable”中添加“field”

希望它会帮助某人:)


Cub*_*czx 8

版本1:

// Update data of question values with $data from formulay
$Q1 = Question::find($id);
$Q1->fill($data);
$Q1->push();
Run Code Online (Sandbox Code Playgroud)

版本2:

$Q1 = Question::find($id);
$Q1->field = 'YOUR TEXT OR VALUE';
$Q1->save();
Run Code Online (Sandbox Code Playgroud)

如果问题得到解答,您可以使用它们:

$page = Page::find($id);
$page2update = $page->where('image', $path);
$page2update->image = 'IMGVALUE';
$page2update->save();
Run Code Online (Sandbox Code Playgroud)