Laravel Eloquent delete() 不起作用

Rom*_*LTU 7 php laravel eloquent laravel-5 laravel-eloquent

文档说:

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

$user->delete();
Run Code Online (Sandbox Code Playgroud)

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

但我可以删除记录:

ProductColor::destroy($color_id);
Run Code Online (Sandbox Code Playgroud)

一定是我之前忽略的东西,我是 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');
        }

    }
Run Code Online (Sandbox Code Playgroud)

总结

这有效

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');
        }
    }
Run Code Online (Sandbox Code Playgroud)

这不是

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

  $color->delete();
}
Run Code Online (Sandbox Code Playgroud)

我的模特

<?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';
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*LTU 9

对不起,我已经找到了问题所在。发布这个问题是我的错误。

我试图做的事情:

$color = new ProductColor();
$color->find($color_id);
$color->delete();
Run Code Online (Sandbox Code Playgroud)

应该:

$color = ProductColor::find( $color_id );
$color->delete();
Run Code Online (Sandbox Code Playgroud)

我的问题是我害怕 IDE 抱怨使用非静态方法“查找”

  • 第一个示例很好,但您必须分配 find() 的返回值,因为它返回一个新模型,它不只是将属性附加到现有模型。 (2认同)