2016-04-03 26 views
0

Belirli bir kullanıcı için veriye erişmek ve verileri güncellemek istiyorum. Veritabanına bu nedenle boşalmak için güncelleme sayfasına gitmek istediğimde veritabanı boş verileri güncellemek aşağıdaki hatayı gösteriyor. 14cfe21a93ffc779c1e985ab027ee400af4e7d8b.php hattındaLaravel 5.2: Veritabanından bire bir ilişkisel ilişkide veri nasıl alınır

ErrorException 12: (: C: \ xampp \ htdocs protfolio \ kaynaklar \ görünümleri \ update.blade.php \ Görünüm)

olmayan nesne özelliğini almaya çalışırken

Bire bir eloquent ilişki kullanıyorum. Tek kullanıcı kendi profilini oluşturabilir ve profili güncelleyebilir.

My Kullanıcı Modeli:

<?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 
    } 
} 

Benim Mesaj Modeli:

<?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' 

    ]); 

}); 

Benim Mesaj Kontrolörü:

<?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'); 
     }   
    } 
İşte

<?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 
    } 
} 

yoldur

{!! Form::open(array('route' => 'update','class'=>'form-horizontal','method'=>'POST')) !!} 

bunu kullanın:

{!! Form::model($posts, array('route' => 'update','class'=>'form-horizontal','method'=>'POST')) !!} 

Yukarıdaki gibi kullanırsanız, gerek ayarlamak için

Ve burada 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 
+0

? Lütfen 'routes.php' dosyasının kodunu yazınız. –

+0

Mesaj tablosundan sorgu yapıyorsunuz, tablo var, formda kullandığınız first_name, last_name vb? Yanlış dizin oluşturuyor olabilirsiniz yanlış dizin –

cevap

0

yerine bu kullanıyor el ile form. Şimdi tüm giriş alanlarından value özniteliğini kaldırın. Kontrolör olarak

:

sizin `update.blade.php` görünümü için yöntemdir
public function getDashboard() 
{   
    $posts = \DB::table('posts')->where('user_id', Auth::user()->id)->first();  
    return view('dashboard.update', compact('posts')); //If the `update.blade.php` is into the `dashboard` directory. 
} 
+0

üzgünüm. Sorun hala aynı! Bkz. O kullanıcı için veritabanı yok. Boş değer göstermesi gerekiyor. Bunun yerine yukarıdaki hatayı gösteriyor. – Hola

+0

'Kullanıcıların' Bire-bir 'ilişki tanımlaması için bir tablonuz olmalıdır. –

+0

Yalnızca modelimde tanımladım. – Hola