我想访问特定用户的数据并更新数据。由于这个原因,当我想要进入更新页面时,数据库为空更新显示以下错误的数据。Laravel 5.2:如何从数据库中以一对一的雄辩关系检索数据
在14cfe21a93ffc779c1e985ab027ee400af4e7d8b.php线ErrorException 12:试图获得的非对象属性(查看: C:\ XAMPP \ htdocs中\ protfolio \资源\视图\ update.blade.php)
我使用一对一的雄辩关系。单个用户可以创建他自己的配置文件并更新配置文件。
我的用户模型:
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function post()
{
return $this->hasOne('App\Post'); //Profile is your profile model
}
}
我的帖子型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'first_name', 'middle_name', 'last_name','gender', 'dob','nationality','nid','email','phone_no','about_me'
];
public function user()
{
return $this->belongsTo('App\User'); //Profile is your profile model
}
}
这里是路线:
<?php
Route::group(['middleware' => ['web']], function() {
Route::get('/', function() {
return view('welcome');
})->name('home');
Route::get('/dashboard', [
'uses' =>'[email protected]',
'as' => 'dashboard',
'middleware' => 'auth'
]);
Route::post('/update',[
'uses'=>'[email protected]',
'as' => 'update',
'middleware' =>'auth'
]);
Route::get('/account',[
'uses' => '[email protected]',
'as' =>'account',
'middleware' =>'auth'
]);
Route::get('/create',[
'uses' => '[email protected]',
'as' =>'create',
'middleware' =>'auth'
]);
Route::post('/save',[
'uses'=>'[email protected]',
'as' =>'save'
]);
});
我的帖子控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Post;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
class PostController extends Controller
{
public function getDashboard()
{
$posts = DB::table('posts')->where('id', Auth::user()->id);
return view('dashboard',['posts'=>$posts]);
}
public function postUpdate(Request $request)
{
$this->validate($request,[
'first_name'=> 'required|max:120',
'middle_name'=> 'required|max:120',
'last_name' => 'required|max:120',
'gender'=> 'required',
'dob'=>'required',
'nationality'=>'required',
'nid'=>'required',
'email' => 'required|email|unique:users',
'phone_no'=>'required',
'about_me'=>'required',
]);
// $data =fill($request->all());
$data = $request->only('first_name', 'middle_name', 'last_name',
'gender', 'dob', 'nationality', 'nid', 'email', 'phone_no', 'about_me');
$request->user()->post()->update($data) ;
return redirect()->route('dashboard');
}
}
这里是update.blade.php
@extends('layouts.master')
@section('content')
@include('includes.message-block')
<div class="container" >
<h3> Update Profile </h3>
{!! Form::open(array('route' => 'update','class'=>'form-horizontal','method'=>'POST')) !!}
{{-- {!! Form::token(); !!}
{!! csrf_field() ; !!} --}}
<div class="form-group">
<label>First Name</label>
<input type="text" name="first_name" class="form-control" value="{{$posts->first()->first_name}}">
</div>
<div class="form-group">
<label>Middle Name</label>
<input type="text" name="middle_name" class="form-control" value="{{$posts->first()->middle_name}}">
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" name="last_name" class="form-control" value="{{$posts->first()->last_name}}">
</div>
<div class="form-group">
<label>Gender</label>
<select class="form-control" name="gender" value="{{$posts->first()->gender}}">
<option>Male</option>
<option>Female</option>
</select>
</div>
<div class="form-group">
<label> Date Of Birth</label>
<input type="date" name="dob" class="form-control" value="{{$posts->first()->dob}}">
</div>
<div class="form-group">
<label>Nationality</label>
<input type="text" name="nationality" class="form-control" value="{{$posts->first()->nationality}}">
</div>
<div class="form-group">
<label>NID</label>
<input type="text" name="nid" class="form-control" value="{{$posts->first()->nid}}">
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" value="{{$posts->first()->email}}">
</div>
<div class="form-group">
<label>Phone</label>
<input type="text" name="phone_no" class="form-control" value="{{$posts->first()->phone_no}}">
</div>
<div class="form-group">
<label>About Me</label>
<textarea class="form-control" name="about_me" rows="3">{{$posts->first()->about_me}}</textarea>
</div>
<button type="submit" class="btn btn-default">Submit</button>
{!! Form::close() !!}
</div>
@endsection
哪里是你的'update.blade.php'鉴于方法?请发布'routes.php'文件的代码。 –
你正在从邮件列表中查询邮件列表是否有你在form中使用的first_name,last_name等?可能是你在填写错误索引 –