Laravel Eloquent删除()不起作用

时间:2017-08-13 09:40:01

标签: php laravel laravel-5 eloquent laravel-eloquent

文档说:

$user = User::find($user_id);

$user->delete();

这不起作用,但是ProductColor :: find($ color_id)正常工作。 $ color-> delete()Doest返回任何内容,DELETE FROM查询甚至不执行(如调试栏中所示)。

但我可以删除记录:

ProductColor::destroy($color_id);

必须是我之前忽略的东西,我是Laravel的新手。

我也在使用商店,它按预期工作

public function store(Request $request)
    {
        $color = new ProductColor();
        $color->name = $request->color_name;
        $color->order = $request->color_order;
        $saved = $color->save();

        if ($saved) {
            return back()->with('message:success', 'Ok');
        } else {
            return back()->with('message:error', 'Error');
        }

    }

总结

这个作品

public function destroy($color_id)
    {
        $deleted = ProductColor::destroy($color_id);

        if ($deleted) {
            return back()->with('message:success', 'Deleted');
        } else {
            return back()->with('message:error', 'Error');
        }
    }

这不是

public function destroy($color_id)
{
  $color = ProductColor::find($color_id);

  $color->delete();
}

我的模特

<?php

namespace Modules\Shop\Entities;

use Illuminate\Database\Eloquent\Model;
use Modules\Languages\Entities\Language;

class ProductColor extends Model
{
    protected $fillable = [];
    protected $table = 'product_colors';
}

4 个答案:

答案 0 :(得分:1)

抱歉,我弄清楚哪里有问题。我发错的错误。

我试图做的事情:

$color = new ProductColor();
$color->find($color_id);
$color->delete();

应该是:

$color = ProductColor::find( $color_id );
$color->delete();

我的问题是,我害怕IDE抱怨使用非静态方法'find'

答案 1 :(得分:1)

如果您添加了软删除选项,请检查您的模型类,在这种情况下,您的记录不会从数据库中删除。

答案 2 :(得分:0)

您的代码很好 - the docs show exactly您正在做什么。

如果没有错误,并且颜色未按预期删除,则$color_id未按预期传递。尝试使用findOrFail,或添加一些您找到预期模型的其他检查。

答案 3 :(得分:-4)

您必须在用户模型中添加SoftDeletes:

...

  

使用Illuminate \ Database \ Eloquent \ SoftDeletes;

类用户扩展了Authenticateable {

  

使用SoftDeletes;

     

受保护的$ dates = ['deleted_at'];

...