Hier ist Szenario:Laravel 5.2 One to One eloquente Beziehung
Ich habe 2 Tabellen.
1. User
2. Post
Benutzer kann sich anmelden, einloggen und abmelden, er kann sein eigenes Profil erstellen, er kann es aktualisieren.
Post-Tabelle enthält individuelle Benutzerinformationen, wenn Benutzer sein Profil erstellen, enthält diese Tabelle die Daten und aus dieser Tabelle kann der Benutzer die Daten auch aktualisieren.
Das Problem ist, ich die Benutzer erstellen können, aber konnte es nicht aktualisieren. Wie löse ich dieses Problem?
Undefined property:
Illuminate\Database\Eloquent\Collection::$first_name (View:
C:\xampp\htdocs\protfolio\resources\views\update.blade.php)
Hier ist mein User-Modell:
<?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');
}
}
Hier ist die Post Model:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function user()
{
return $this->belongsTo('App\User'); //Profile is your profile model
}
}
hier ist die Post-Controller:
<?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 = Post::all();
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',
]);
$post = Post::find($request['postId']);
if (Auth::user() != $post->user) {
return redirect()->back();
}
$post->first_name = $request['first_name'];
$post->middle_name = $request['middle_name'];
$post->last_name = $request['last_name'];
$post->gender = $request['gender'];
$post->dob = $request['dob'];
$post->nationality = $request['nationality'];
$post->nid = $request['nid'];
$post->email = $request['email'];
$post->phone_no = $request['phone_no'];
$post->about_me = $request['about_me'];
$post->update();
return redirect()->route('dashboard');
}
public function postCreate(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',
]);
$post = new Post();
$post->first_name = $request['first_name'];
$post->middle_name = $request['middle_name'];
$post->last_name = $request['last_name'];
$post->gender = $request['gender'];
$post->dob = $request['dob'];
$post->nationality = $request['nationality'];
$post->nid = $request['nid'];
$post->email = $request['email'];
$post->phone_no = $request['phone_no'];
$post->about_me = $request['about_me'];
$message='There was an Error';
if($request->user()->post()->save($post)){
$message = "Profile Created successfully";
}
return redirect()->route('dashboard')->with(['message' => $message]);
}
}
ist hier der Nutzer Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use App\Post;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class UserController extends Controller
{
public function getAccount()
{
$posts = Post::all();
return view('update',['user'=>Auth::user()],['posts'=>$posts]);
}
public function getCreate()
{
return view('create',['user'=>Auth::user()]);
}
}
Hier ist meine update.blade.php
@extends('layouts.master')
@section('content')
@include('includes.message-block')
<div class="container" >
<h3> Create course </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_name}}">
</div>
<div class="form-group">
<label>Middle Name</label>
<input type="text" name="middle_name" class="form-control" value="{{$posts->middle_name}}">
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" name="last_name" class="form-control" value="{{$posts->last_name}}">
</div>
<div class="form-group">
<label>Gender</label>
<select class="form-control" name="gender" value="{{$posts->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->dob}}">
</div>
<div class="form-group">
<label>Nationality</label>
<input type="text" name="nationality" class="form-control" value="{{$posts->nationality}}">
</div>
<div class="form-group">
<label>NID</label>
<input type="text" name="nid" class="form-control" value="{{$posts->nid}}">
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" value="{{$posts->email}}">
</div>
<div class="form-group">
<label>Phone</label>
<input type="text" name="phone_no" class="form-control" value="{{$posts->phone_no}}">
</div>
<div class="form-group">
<label>About Me</label>
<textarea class="form-control" name="about_me" rows="3">"{{$posts->about_me}}"</textarea>
</div>
<button type="submit" class="btn btn-default">Submit</button>
{!! Form::close() !!}
</div>
@endsection
Nein, immer noch das gleiche Problem gleiche verwenden! – Hola
Können Sie var_dump ($ posts) in Ihrer Sicht und sehen, welche Eigenschaften Sie bekommen? – RDev