Laravel 删除数据包中的 1 个密钥但没有反馈和更改
Laravel delete 1 key in paket but no feedback and changes
我有 2 个模型:
class Penghuni extends Model
{
use SoftDeletes;
protected $fillable = [
'nama_penghuni', 'email', 'phone', 'tower',
'no_unit'
];
protected $guarded = [];
public function penghunis() {
return $this->hasMany(Penghuni::class);
}
}
和
class Packet extends Model
{
use SoftDeletes;
protected $fillable = [
'name', 'tanggal_masuk', 'tanggal_keluar', 'penerima', 'email', 'phone', 'no_unit', 'penghuni_id'
];
public function penghuni() {
return $this->belongsTo(Penghuni::class);
}
}
当我想进行软删除时,deleted_at 列值没有更新,但由于我的控制器成功而被重定向。这是我的控制器:
public function destroy(Packet $packet)
{
$packet->delete();
session()->flash('success', 'Delete Packet Berhasil');
return redirect(route('paket.index'));
}
我删除的时候没有变化,我的按钮是:
<a href="javascript:$('#delete_paket{{ $paket->id }}').submit();" class="btn btn-danger" onclick="return confirm('Anda yakin ingin menghapus data paket {{ $paket->name }}?');">Delete</a>
<form action="{{ route('paket.destroy', $paket->id) }}" method="POST" id="delete_paket{{ $paket->id }}">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger" hidden>Delete</button>
</form>
您的路由参数可能 paket
而不是 packet
。更改您的方法签名,使参数名称与路由参数名称匹配:
public function destroy(Packet $paket)
如果这不匹配,那么 Laravel 只是认为您需要依赖注入而不是路由模型绑定。因此,您目前正在获取一个新的模型实例(非现有模型实例)而不是您的模型绑定(现有模型实例)。
您可以运行 php artisan route:list
查看路由参数的名称。
将您的 $packet
更改为单数形式的路线名称,但由于您使用的不是英语,因此请使用您的路线名称:
public function destroy(Packet $paket)
不在方法 arg 中使用模型的另一种方法:
public function destroy($id)
{
$packet = Packet::find($id)
$packet->delete();
session()->flash('success', 'Delete Packet Berhasil');
return redirect(route('paket.index'));
}
我有 2 个模型:
class Penghuni extends Model
{
use SoftDeletes;
protected $fillable = [
'nama_penghuni', 'email', 'phone', 'tower',
'no_unit'
];
protected $guarded = [];
public function penghunis() {
return $this->hasMany(Penghuni::class);
}
}
和
class Packet extends Model
{
use SoftDeletes;
protected $fillable = [
'name', 'tanggal_masuk', 'tanggal_keluar', 'penerima', 'email', 'phone', 'no_unit', 'penghuni_id'
];
public function penghuni() {
return $this->belongsTo(Penghuni::class);
}
}
当我想进行软删除时,deleted_at 列值没有更新,但由于我的控制器成功而被重定向。这是我的控制器:
public function destroy(Packet $packet)
{
$packet->delete();
session()->flash('success', 'Delete Packet Berhasil');
return redirect(route('paket.index'));
}
我删除的时候没有变化,我的按钮是:
<a href="javascript:$('#delete_paket{{ $paket->id }}').submit();" class="btn btn-danger" onclick="return confirm('Anda yakin ingin menghapus data paket {{ $paket->name }}?');">Delete</a>
<form action="{{ route('paket.destroy', $paket->id) }}" method="POST" id="delete_paket{{ $paket->id }}">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger" hidden>Delete</button>
</form>
您的路由参数可能 paket
而不是 packet
。更改您的方法签名,使参数名称与路由参数名称匹配:
public function destroy(Packet $paket)
如果这不匹配,那么 Laravel 只是认为您需要依赖注入而不是路由模型绑定。因此,您目前正在获取一个新的模型实例(非现有模型实例)而不是您的模型绑定(现有模型实例)。
您可以运行 php artisan route:list
查看路由参数的名称。
将您的 $packet
更改为单数形式的路线名称,但由于您使用的不是英语,因此请使用您的路线名称:
public function destroy(Packet $paket)
不在方法 arg 中使用模型的另一种方法:
public function destroy($id)
{
$packet = Packet::find($id)
$packet->delete();
session()->flash('success', 'Delete Packet Berhasil');
return redirect(route('paket.index'));
}