Php Laravel 5.6中的补丁请求
对于我的每个登录用户,他们在“设置”表中都有一行,这为我提供了有关用户在使用我的web应用时需要的各个设置的更多信息 好的,在Laravel5.6中,我希望用户能够更新设置。但是,如果他们第一次登录,它可能不存在,我不知道补丁请求是否在尝试更新它之前检查该行 无论哪种方式,以下是我的设置模型:Php Laravel 5.6中的补丁请求,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,对于我的每个登录用户,他们在“设置”表中都有一行,这为我提供了有关用户在使用我的web应用时需要的各个设置的更多信息 好的,在Laravel5.6中,我希望用户能够更新设置。但是,如果他们第一次登录,它可能不存在,我不知道补丁请求是否在尝试更新它之前检查该行 无论哪种方式,以下是我的设置模型: <?php namespace App; use Illuminate\Database\Eloquent\Model; use \App\User; class Settings exte
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use \App\User;
class Settings extends Model
{
protected $connection = "mysql";
protected $table = "settings";
public function user() {
return $this->belongsTo(User::class);
}
}
然后在我的设置controller.php
中,我有以下内容:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use \App\Settings;
class SettingsController extends Controller
{
//
public function index() {
return view('settings');
}
public function patch() {
Settings::patch(request([
'font',
'updates',
'font-size',
'hide-intro',
'hide-commentary',
'night-mode'
]));
}
}
好吧,这对我来说应该是可行的,我知道没有验证,但我可以稍后再验证。但是,我得到以下错误:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
我能做些什么来解决这个问题?我是不是走错了路?你需要
传递方法动词。将此添加到您的表单中
<input name="_method" type="hidden" value="PATCH">
在表单内部使用以下方法\u字段()
{{ method_field('PATCH') }}
哦,好的,现在我得到:Method-illumb\Database\Query\Builder::patch不存在。
因为该方法在您的设置模型上不存在。@N.B.回顾其他项目,我认为它不需要存在-这是一个补丁请求,与model->create()一样
它是内置的?模型没有补丁方法,而是使用@LuisfelipeDejesusMunoz建议的设置::updateOrCreate(..
。有关更多信息,请阅读:@FahimUddin,好的,我已经使用了该方法,但是我没有得到任何数据库更改。它知道要更新哪个用户吗?
<input name="_method" type="hidden" value="PATCH">
{{ method_field('PATCH') }}