【发布时间】:2020-12-24 17:56:09
【问题描述】:
我是一个新的 php 程序员,我刚开始使用 laravel,我正在尝试构建一个库应用程序,目前我正在处理贷款部分。基本上我有一个名为 copy_user 的数据透视表,其中包含以下列: ('copy_id', 'user_id', 'date', 'return_date', 'created_at', 'updated_at') copy_id 是其中之一可以链接到 books 表中的书的副本。基本上我在用户模型上我有这个代码:
public function loanedCopies() {
return $this->belongsToMany(Copy::class)->withPivot('date', 'return_date');
}
在复制模型上我有:
public function loaningUsers() {
return $this->belongsToMany(User::class)->withPivot(['date', 'return_date']);
}
我为贷款创建了一个视图,它将显示表 copy_user 的内容,所以我还创建了一个 LoanController 和一个使用资源控制器的路由:
Route::resource('loans', LoanController::class);
现在我要做的是通过使用资源而不使用模型来删除或编辑 copy_user 表上的记录,我正在尝试这样做:
视图上的代码:
<form action="/loans/{{$copy->id}}?user_id={{$user->id}}&date={{$copy->pivot->date}}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-link"><i class="fas fa-trash-alt"></i></button>
</form>
控制器中的代码:
public function destroy(Copy $copy)
{
$request = Request::capture();
$request->get('user_id');
$request->get('date');
$copy->loaningUsers()->where('id', $request->get('user_id'))->wherePivot('date', $request->get('date'))->detach();
return redirect('/loans');
}
现在的问题是 destroy 方法没有接收任何数据,因此它没有删除任何内容。我被明确告知不要使用贷款模型,但我不知道这是否可能。使用资源控制器是我的决定,但我不知道这是否是正确的方法,有没有人知道为什么这不起作用?提前感谢每一位愿意回答的人!
【问题讨论】:
标签: php laravel many-to-many eloquent-relationship