Laravel Eloquent delete() 不工作
Laravel Eloquent delete() not working
文档说:
$user = User::find($user_id);
$user->delete();
这不起作用,但是 ProductColor::find($color_id) 有效。 $color->delete() Doest return 任何东西,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';
}
您的代码没问题 - the docs show exactly 您在做什么。
如果没有错误,并且没有按预期删除颜色,则 $color_id
没有按预期通过。尝试使用 findOrFail
,或添加一些其他检查以确保您找到了预期的模型。
抱歉,我已经解决问题了。我对post这个问题的错误。
我尝试做的事情:
$color = new ProductColor();
$color->find($color_id);
$color->delete();
应该是:
$color = ProductColor::find( $color_id );
$color->delete();
我的问题是我害怕 IDE 抱怨使用非静态方法 'find'
您必须在用户模型中添加 SoftDeletes:
...
use Illuminate\Database\Eloquent\SoftDeletes;
class 用户扩展可验证
{
use SoftDeletes;
protected $dates = ['deleted_at'];
...
如果您添加了软删除选项,请检查您的型号class,在这种情况下,您的记录不会从数据库中删除。
DB::table('pykcodes')
->where('user_id', $user_id)
->delete();
无需使用模型即可直接使用。
只需确保从顶部调用 use DB;
。
文档说:
$user = User::find($user_id);
$user->delete();
这不起作用,但是 ProductColor::find($color_id) 有效。 $color->delete() Doest return 任何东西,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';
}
您的代码没问题 - the docs show exactly 您在做什么。
如果没有错误,并且没有按预期删除颜色,则 $color_id
没有按预期通过。尝试使用 findOrFail
,或添加一些其他检查以确保您找到了预期的模型。
抱歉,我已经解决问题了。我对post这个问题的错误。
我尝试做的事情:
$color = new ProductColor();
$color->find($color_id);
$color->delete();
应该是:
$color = ProductColor::find( $color_id );
$color->delete();
我的问题是我害怕 IDE 抱怨使用非静态方法 'find'
您必须在用户模型中添加 SoftDeletes:
...
use Illuminate\Database\Eloquent\SoftDeletes;
class 用户扩展可验证 {
use SoftDeletes;
protected $dates = ['deleted_at'];
...
如果您添加了软删除选项,请检查您的型号class,在这种情况下,您的记录不会从数据库中删除。
DB::table('pykcodes')
->where('user_id', $user_id)
->delete();
无需使用模型即可直接使用。
只需确保从顶部调用 use DB;
。