Laravel5.8 我无法将数据存储到我的 sql 服务器
Laravel5.8 I cannot store data to my sql server
我正在设置用户个人资料页面,但我无法将数据插入 mysql
服务器。
我无法解决这个问题。
我的个人资料文件夹中有 index.blade.php
,从索引页面转到 create.blade.php
。
When I enter the submit button, my page redirects to index.blade.php
,
but in mysql
server, nothing is recorded.
web.php
Route::prefix('user')->group(function(){
Route::resource('profile', 'UserController');
});
create.blade.php
<form action="{{route('profile.store')}}" method="POST">@csrf
<ul class="information">
<li>Name :<br>
<input type="text" class="name" name="name">
</li><br>
<li>Gender :<br>
<div class="gender">
<select name="gender" id="" name="gender">
<option class="option" value="" selected="selected">Select Gender</option>
<option value="male" >Male</option>
<option value="female" class="selected">Female</option>
<option value="any">Any</option>
</select>
</div>
</li>
<li>Country :<br>
<div class="country">
<select name="country" id="" name="country">
<option value="" selected="selected">Select Country</option>
<option value="United States" class="selected">United States</option>
<option value="United Kingdom">United Kingdom</option>
</select>
</div>
</li><br>
<li>Birthday :<br>
<input type="text" class="birthday" id="bod" name="bod">
</li><br>
<li>User Description :<br>
<textarea name="description" id="" cols="60" rows="10"></textarea></li>
</ul>
<button type="submit" class="saveBtn">Save</button>
</div>
</form>
</div>
UserController.php
public function index()
{
return view('profile.index');
}
public function create()
{
return view('profile.create');
}
public function store(Request $request) {
$user_id = auth()->user()->id;
Profile::where('user_id',$user_id)->update([
'name'=>request('name'),
'gender'=>request('gender'),
'country'=>request('country'),
'bod'=>request('bod'),
'description'=>request('description')
]);
return redirect()->route('profile.index');
}
Profile.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
protected $fillable = [
'user_id','name', 'gender', 'country', 'bod', 'description'
];
}
如果您需要更新现有记录:
$user_id = auth()->user()->id;
$update = Profile::where('user_id',$user_id)->update([
'name'=>$request->name,
'gender'=>$request->gender,
'country'=>$request->country,
'bod'=>$request->bod,
'description'=>$request->description
]);
if($update){
return redirect()->route('profile.index');
}else{
//do something if fails
}
但是如果您需要添加新的个人资料,那么:
$create= Profile::create([
'user_id'=>auth()->user()->id,
'name'=>$request->name,
'gender'=>$request->gender,
'country'=>$request->country,
'bod'=>$request->bod,
'description'=>$request->description
]);
if($create){
return redirect()->route('profile.index');
}else{
//do something if fails
}
试试这个,假设您正在尝试 post 新记录:
public function store(Request $request) {
$profile = new Profile;
$profile->name = $request->input('name');
$profile->gender = $request->input('gender');
$profile->country = $request->input('country');
$profile->bod = $request->input('bod');
$profile->description = $request->input('description');
$profile->save();
return redirect()->route('profile.index');
}
在您的 Profile
模型中,使 'name', 'gender','country''bod','description'
使这些字段 可填充。
您的代码仅更新 Profile
模型(如果它首先存在)。如果您不知道记录是否存在,您可能想尝试 updateOrCreate 方法。它将更新现有记录,或者如果没有这样的记录,它将创建一个新记录:
public function store(Request $request) {
$user_id = auth()->user()->id;
Profile::updateOrCreate(
['user_id' => $user_id], // search requirements
[
// fields to update or create record with
'name' => request('name'),
'gender' => request('gender'),
'country' => request('country'),
'bod' => request('bod'),
'description' => request('description')
]
);
return redirect()->route('profile.index');
}
在您的用户模型中建立这样的 userProfile 关系
class User extends Model
{
protected $fillable = ['what ever you want to fill in user model'];
public function userProfile()
{
return $this->hasOne(Profile::class, 'user_id');
}
}
然后你可以在你的控制器中像这样更新你的关系数据
$user = ['user_id'=>auth()->user()->id];
$order->location()->updateOrCreate($user, $arrayOfData);
在你的模型中使用这个,
protected $fillable = ['name', 'gender', 'country'];
或者如果你可以使用它,
protected $guarded=[];
我正在设置用户个人资料页面,但我无法将数据插入 mysql
服务器。
我无法解决这个问题。
我的个人资料文件夹中有 index.blade.php
,从索引页面转到 create.blade.php
。
When I enter the submit button, my page redirects to
index.blade.php
, but inmysql
server, nothing is recorded.
web.php
Route::prefix('user')->group(function(){
Route::resource('profile', 'UserController');
});
create.blade.php
<form action="{{route('profile.store')}}" method="POST">@csrf
<ul class="information">
<li>Name :<br>
<input type="text" class="name" name="name">
</li><br>
<li>Gender :<br>
<div class="gender">
<select name="gender" id="" name="gender">
<option class="option" value="" selected="selected">Select Gender</option>
<option value="male" >Male</option>
<option value="female" class="selected">Female</option>
<option value="any">Any</option>
</select>
</div>
</li>
<li>Country :<br>
<div class="country">
<select name="country" id="" name="country">
<option value="" selected="selected">Select Country</option>
<option value="United States" class="selected">United States</option>
<option value="United Kingdom">United Kingdom</option>
</select>
</div>
</li><br>
<li>Birthday :<br>
<input type="text" class="birthday" id="bod" name="bod">
</li><br>
<li>User Description :<br>
<textarea name="description" id="" cols="60" rows="10"></textarea></li>
</ul>
<button type="submit" class="saveBtn">Save</button>
</div>
</form>
</div>
UserController.php
public function index()
{
return view('profile.index');
}
public function create()
{
return view('profile.create');
}
public function store(Request $request) {
$user_id = auth()->user()->id;
Profile::where('user_id',$user_id)->update([
'name'=>request('name'),
'gender'=>request('gender'),
'country'=>request('country'),
'bod'=>request('bod'),
'description'=>request('description')
]);
return redirect()->route('profile.index');
}
Profile.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
protected $fillable = [
'user_id','name', 'gender', 'country', 'bod', 'description'
];
}
如果您需要更新现有记录:
$user_id = auth()->user()->id;
$update = Profile::where('user_id',$user_id)->update([
'name'=>$request->name,
'gender'=>$request->gender,
'country'=>$request->country,
'bod'=>$request->bod,
'description'=>$request->description
]);
if($update){
return redirect()->route('profile.index');
}else{
//do something if fails
}
但是如果您需要添加新的个人资料,那么:
$create= Profile::create([
'user_id'=>auth()->user()->id,
'name'=>$request->name,
'gender'=>$request->gender,
'country'=>$request->country,
'bod'=>$request->bod,
'description'=>$request->description
]);
if($create){
return redirect()->route('profile.index');
}else{
//do something if fails
}
试试这个,假设您正在尝试 post 新记录:
public function store(Request $request) {
$profile = new Profile;
$profile->name = $request->input('name');
$profile->gender = $request->input('gender');
$profile->country = $request->input('country');
$profile->bod = $request->input('bod');
$profile->description = $request->input('description');
$profile->save();
return redirect()->route('profile.index');
}
在您的 Profile
模型中,使 'name', 'gender','country''bod','description'
使这些字段 可填充。
您的代码仅更新 Profile
模型(如果它首先存在)。如果您不知道记录是否存在,您可能想尝试 updateOrCreate 方法。它将更新现有记录,或者如果没有这样的记录,它将创建一个新记录:
public function store(Request $request) {
$user_id = auth()->user()->id;
Profile::updateOrCreate(
['user_id' => $user_id], // search requirements
[
// fields to update or create record with
'name' => request('name'),
'gender' => request('gender'),
'country' => request('country'),
'bod' => request('bod'),
'description' => request('description')
]
);
return redirect()->route('profile.index');
}
在您的用户模型中建立这样的 userProfile 关系
class User extends Model
{
protected $fillable = ['what ever you want to fill in user model'];
public function userProfile()
{
return $this->hasOne(Profile::class, 'user_id');
}
}
然后你可以在你的控制器中像这样更新你的关系数据
$user = ['user_id'=>auth()->user()->id];
$order->location()->updateOrCreate($user, $arrayOfData);
在你的模型中使用这个,
protected $fillable = ['name', 'gender', 'country'];
或者如果你可以使用它,
protected $guarded=[];